git rebase --preserve-merges
该文档说"合并冲突解决方案或手动修改合并提交不会被保留"。
我理解如何使用rerere
处理合并冲突,但是对于合并提交究竟是什么手动修改? rerere
也会处理这个问题吗?如果没有,是否有解决方法?
答案 0 :(得分:1)
该文档说“不保留合并冲突解决方案或手动修改合并提交”。
这句话的说法(不太好)是--preserve-merges
,git rebase
实际重新合并。
一般来说,保留原始合并是不可能的,而Git根本就不会尝试。相反,它注意到原始提交 M 是与额外父级 p2 , p3 ,..., pN的合并超越链中的父级,你正在变基础。因此,在复制 M 时,不是git cherry-pick <ID>
,而是git merge p2 ...
。当然,这是一个全新的合并。
rebase代码根本不会调整您的rerere
设置,因此您可以获得所设置的任何内容。
...合并提交的手动修改究竟是什么?
这可能是最好的例子:
$ git checkout br1
$ git merge --no-commit br2
Automatic merge went well; stopped before committing as requested
$ git status --short
A file2
$ echo 'sneaky sneaky' >> file2
$ git add file2
$ git commit --no-edit
[br1 86ea409] Merge commit 'br2' into br1
我添加到file2
的行在任一分支中都没有出现:我手动修改了它。
(同样地,我可以让合并执行自动提交,然后使用git commit --amend
,将原始合并推到一边,并使用git add
编辑的任何内容放置新的合并。从那以后的指数。)