如何避免git rebase查杀合并提交?

Mat*_*ley 34 git version-control git-merge git-rebase

鉴于以下git历史:

    C-I    origin/master
   /
A-B-F-G-H  master
 \   /
  D-E      branch-b
Run Code Online (Sandbox Code Playgroud)

我想重新定义我的本地master分支origin/master,但我想保留合并提交G.当我尝试简单地做git rebase origin/master一会儿时master就被压扁了D..E,G并用提交消息提交了E,所以有一个合并的历史丢失了.有没有办法保留这个合并,同时仍然得到rebase?为清楚起见,我的预期结果是:

A-B-C-I-F-G-H  master
 \       /
  D-----E      branch-b
Run Code Online (Sandbox Code Playgroud)

Ada*_*ruk 50

添加--preserve-merges到您的rebase命令.如果您的合并中存在冲突解决方案,请将"递归他们的"策略添加为参数.

  • 或者只是`-p`. (11认同)
  • 有关此标志将会发生什么的荒谬细节,请参阅http://stackoverflow.com/questions/15915430/what-exactly-does-gits-rebase-preserve-merges-do-and-why上的答案. (6认同)
  • 你能详细说明为什么`recursive theirs`会在这种情况下有所帮助吗?可以使用不同的冲突解决策略创建合并提交"G",不是吗? (4认同)