如何在更新的主线上重做更改(撤消错误的git合并的一部分)

时间:2016-02-01 22:36:32

标签: git github version-control merge

我正在查看有关如何撤消错误合并的文档:https://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.html

我想知道如何在错误合并之后重做功能分支的拉取请求。我不想改变主线分支的历史。要重做pull请求,我认为我需要在还原提交后重做更新主线之上的更改。否则,我的原始提交不会出现在新的拉取请求的差异中,因为它们已经成为主线历史的一部分。

在该文件中,以下是我遇到问题的部分:

  

如果旁边分支的开发人员丢弃他们有缺陷的A和B,并在恢复之后在更新的主线之上重做更改,那么历史记录将如下所示:

---o---o---o---M---x---x---W---x---x
              /                 \
      ---A---B                   A'--B'--C'

我的功能分支在头部与B合并,M是合并提交,W是我的功能分支合并提交的恢复。因此,如果我正在处理该功能分支,如何重做我的更改以创建A'--B'--C'分支?我应该选择所有现有的提交吗?

基本上,我希望从这里开始:

---o---o---o---M---x---x---W---x---x
              /                 
      ---A---B                   

到这里:

---o---o---o---M---x---x---W---x---x
              /                 \
      ---A---B                   A'--B'--C'

git rebase <mainline-branch> <feature-branch>不会从现有提交中创建新提交,因为这些提交已经是历史记录的一部分(尽管合并已被还原)。

1 个答案:

答案 0 :(得分:1)

是的,您应该签出x并创建一个新的分支,然后挑选提交A和B.这将为您提供最终的图表。