合并提交的手动修订示例

时间:2016-10-20 15:58:43

标签: git rebase git-rerere

git rebase --preserve-merges

该文档说"合并冲突解决方案或手动修改合并提交不会被保留"。

我理解如何使用rerere处理合并冲突,但是对于合并提交究竟是什么手动修改? rerere也会处理这个问题吗?如果没有,是否有解决方法?

1 个答案:

答案 0 :(得分:1)

  

该文档说“不保留合并冲突解决方案或手动修改合并提交”。

这句话的说法(不太好)是--preserve-mergesgit 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编辑的任何内容放置新的合并。从那以后的指数。)