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

Interesting git rebase scenario with two branches

我正在使用两个 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 的修改版本,具有相同的提交信息。

我尝试先将 master 变基为 newbranch,然后考虑将 newbranch 变基为 master。但是由于有很多冲突,在手动解决冲突后我迷路了,变得一无所知,然后失去了所有手动更正,需要重新开始。

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

这里最简单的事情可能就是将 dnewbranch 提交到 master:

# from master
git cherry-pick d

这将为我们留下以下分支结构:

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