使用上游分支重新设定本地分支

6

分叉仓库后的事件链:

  1. 创建了一个分支
  2. 做了一些更改
  3. 将我的分支提交到上游主分支的PR
  4. 仓库所有者在他的仓库中创建了一个分支,并将我的PR与其他一些更改一起合并。

我仍然需要在此PR上做一些工作,但现在我必须将我的分支变基于仓库所有者创建的分支,以便在我的分支能够与他的主分支合并前测试一些东西。

如何在本地仓库中将我的分支与远程创建的分支进行变基?我想让我的一个分支与上游仓库中的一个分支相同(不是主分支)。

对术语使用可能不太准确,先向大家道歉。


为什么你不能继续在你的原始分支上工作,然后当你更新你的PR时,让Repo所有者重新合并到他的远程分支呢? - fullofsquirrels
我认为这是因为在仓库所有者的分支中更新了测试套件,以便我可以使用不同版本的编程语言运行它,还有一些其他最近的更改。因此,在我能够测试并根据这些测试进行其他更改之前,我需要将它们合并到我的分支中。 - pbreach
我认为另一个选择是基于仓库所有者创建的分支开启一个新的PR,但在同一个PR中继续工作会更加清晰。 - pbreach
1
考虑到所有者已经合并,你可能无法获得完全“干净”的选项。你最好的选择可能是从远程拉取新创建的分支,并将其合并到原始PR分支中。也就是说,除非有另一个远程分支已经包含了远程的更改(更新测试套件等),在他合并你的PR之前;如果你能拉取那个分支,那么你的变基将是“干净”的。 - fullofsquirrels
好的,那么我该如何处理前者呢(不幸的是后者不可行,但我可以看到它会更加清晰)?也许是先执行 git fetch upstream 然后从 PR 分支执行 git merge remote-branch - pbreach
1
是的,基本上是这样。但在此之前,你应该先与仓库所有者确认一下,确保他同意在你完成更新后重新合并你的PR(我不预见会有任何问题,因为他第一次合并你的PR时选择了合并而非变基,但所有者有时可能会很挑剔)。 - fullofsquirrels
2个回答

7
如何将本地仓库中的分支与远程创建的分支合并?我想让我的其中一个分支与上游仓库中的一个分支相同(不是 master 分支)。
通常的方式:
git rebase upstream/the_branch

这将更改您在PR中使用的分支的历史记录,但没关系。由于您的PR尚未被接受,并且正如您所说,它需要更多的工作,因此重写其基础分支是可以的。完成后,可以使用以下命令:

git push -f origin yourbranch_for_pr

作为一个附注,在此之后,在PR中,您将看到在rebase之前和之后进行的所有更改,以及由于那些更改尚未合并到master中而由repo所有者进行的其他更改。如果Repo所有者先将他的更改合并到master中,那么您的PR将只包含您的工作,这将更加清晰明了。

4
如果您想将您的分支与上游同步,并且您本地没有任何想要保留的提交记录,那么更容易的方法是重置分支:
git reset --hard upstream/the_branch

您也可以直接指定一个sha1值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接