git 通过合并提交变基

git rebase with merge commits

我正在尝试返回并压缩一些提交以清理我的历史记录。问题是我的历史记录中包含一些合并提交,因此即使我什么都不做,变基也会失败。

例如:

*   A merge branch 'branch' into 'master'
|\
| * B change to line 5 on 'branch'
* | C change to line 5 on 'master'
|/
*   D add a comment
*   E write some code

我想压缩 DE,但我希望提交 A 处的合并保持原样。但是,当我执行 git rebase -i E~1(显然我需要 ~1 才能 pick 提交 E?),即使我根本不做任何更改,它仍然因冲突而使 rebase 失败。提交 A 没有出现在编辑器中。

是否可以进行这种 rebase,在这种情况下,合并提交将按原样保留,无需任何额外输入?

您必须使用 --preserve-merges 才能在 rebase

中查看合并提交
git rebase -i --preserve-merges E~1