在协作项目中保持fork与上游同步的标准方法是什么?

问题描述 投票:1回答:2

新手开源贡献者在这里。

我在GitLab上分叉了TortoiseGit repository,然后在我的计算机上克隆它,编辑了一个文件,并致力于分支master

几天过去了,我想用上游的最新更改来更新我的本地工作副本,然后推送到我的远程分支并打开合并请求(当然还要做更多的开发/测试等)。

我在我的仓库中添加了一个名为upstream的遥控器,现在我不确定建议的操作是什么:

  1. git pullupstream/master到我签出的分支机构master
  2. // git pull --rebase
  3. git fetch紧随其后的是git rebase

这些是我在研究过程中发现的方法。遗憾的是,我无法找到对每个项目的全面评论,也没有建议在GitHub,GitLab甚至是Linux内核等项目中使用哪一个是典型的做法。

我尝试了方法1和3.方法1(pull)生成合并提交(--ff-only不可能),我的历史在某种程度上受到污染。它也会造成冲突。方法3(rebase)既没有,但我不确定rebase在提交被推到远程后如何表现,所以我担心它可能会导致问题向前发展。

所以这是我的问题。 谢谢。

git repository open-source upstream-branch
2个回答
1
投票

TortoiseGit团队成员在这里。

我在我的仓库中添加了一个名为upstream的远程控制器,现在我不确定建议的操作是什么: 1. git pull from upstream / master to my-out branch-master 2. git pull --rebase // 3. git fetch后跟git rebase。

不同的团队使用不同的工 见Pro Git (v2) - 5.1 Distributed Git - Distributed Workflows

在TortoiseGit团队中,我们更喜欢保持历史简单,贡献者通常有责任在变基时解决冲突。

因此,大多数情况下,我们使用“git fetch后跟git rebase”,特别是在贡献时。然后,如你所说,创建拉/合并请求(通过使用git push),或在GitHub / GitLab上更新拉/合并请求(通过强制使用git push)。

有关其他详细信息,请参阅How Can I Contribute?HowToContribute.txt


1
投票

我在GitLab上分叉了TortoiseGit存储库,然后将其克隆到我的计算机上,编辑了一个文件,并提交到分支主服务器几天过去了,我想用上游的最新更改来更新我的本地工作副本

如果上游你指的是主要回购,你可以

  1. git fetch origin
  2. git rebase origin/master

假设origin指向主要回购

Rebasing重播你当前分支(你的本地master分支)的提交,你在这个案例中重新定位origin/master,这是对master当前origin分支的引用。

例如:

你提交之前的master分支:

  • C
  • b
  • 一个

提交后的master分支:

  • xxx < - 您的提交
  • C
  • b
  • 一个

几天之后,TortoiseGit git承诺origin/master现在看起来像这样。

  • 3
  • 2
  • 1
  • C
  • b
  • 一个

您可以通过在origin/master上获取和重新定位来同步更改。您当地的master分行现在看起来像这样:

  • xxx < - 您的提交
  • 3
  • 2
  • 1
  • C
  • b
  • 一个

我在我的仓库中添加了一个叫做上游的遥控器,现在我不确定推荐的动作是什么

然后你可以简单地git push upstream master来更新你的前叉。

© www.soinside.com 2019 - 2024. All rights reserved.