1

假设在 1 月 1 日,我分叉(origin)并克隆(本地)一个 github repo(upstream)。X我在其上创建了一个分支master。并且,开始研究X. 随着时间的推移,我不断将提交推送到origin.

我一直在更新origin's masterfrom upstream's master。(通过我的本地仓库)。

master当我创建分支时有一个错误X,因此,X目前有这个错误。最近,upstream的主分支更新了一个提交,为该错误提供了错误修复。

我的问题是:如何将这个特定的提交拉到我的X?

masterupstream&的分支origin都已更新。

4

1 回答 1

0

您有 3 个选项:

  1. 重新定位Xupstream/master.
  2. 合并upstream/masterX.
  3. Cherry-pick 特定的提交(我们称之为<sha fix>)到X.

在您选择其中任何一个之前,请务必先从上游获取更改:

# First fetch upstream/master
$ git fetch upstream

然后这里是您的各种选项的命令:

变基

$ git rebase upstream/master X

合并

# With X checked out
$ git merge upstream/master

樱桃采摘

# With X checked out
$ git cherry-pick <sha fix>

一般来说,我建议使用rebase使分支与其上游分支同步,但您可能决定要使用它merge。我不建议使用cherry-pick这个,因为如果你最终要合并Xmaster,你最终会重复提交,这在某些情况下会导致代码回归。

于 2013-07-17T03:53:07.543 回答