有两个分支的有趣的git rebase场景

时间:2019-08-03 06:40:13

标签: git git-merge git-rebase git-cherry-pick git-merge-conflict

我正在使用两个git分支。

a -- b -- c                  <-- master
           \
            d                <-- newbranch

到达commit d之后,我意识到我需要稍微更改commit c。我进入主分支并修改了commit c。现在,commit c变成了commit ec and e具有相同的提交消息。

a -- b -- e                  <-- master
      \     
       c -- d                <-- newbranch

因此,现在我的commit c已无用。现在commit ccommit e在几个文件中有冲突,在所有它们有冲突的文件中,我希望保留commit e的更改。另外,commit d有重要的变化,我不想失去。

我希望我的最终结构是这样的。

a -- b -- e -- f             <-- master

其中commit fcommit d的修订版,具有相同的提交消息。

我尝试先将主分支重新加入newbranch,然后又考虑将新分支重新引入主分支。但是由于存在大量冲突,并且在手动解决了冲突之后,我迷失了方向,变得一无所知,然后丢失了所有手动更正,需要再次开始进行基准调整。

如果有人请指导我有关我方法中应遵循的确切步骤,或者有更好的解决方案,请分享。谢谢。

1 个答案:

答案 0 :(得分:1)

最简单的方法可能是将d提交从newbranch挑选到master上:

# from master
git cherry-pick d

这将使我们具有以下分支结构:

master: a -- b -- e -- f  (*f is actually the cherry pick of d)
              \     
                c -- d