0

git rebase --preserve-merges

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

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

4

1 回答 1

1

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

这句话的意思(不是很好)是 with --preserve-merges,git rebase实际上是重新合并。

一般来说,保留原始合并是不可能的,Git 根本不会尝试。相反,它指出原始提交M是与额外父级的合并p2p3,...,pN在您正在变基的链中的父级之上和之上。因此,当复制Mgit cherry-pick <ID>时,它不会做 ,而是做。当然,这是一个全新的合并。git merge p2 ...

变基代码根本不会调整您的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

于 2016-10-20T16:40:37.623 回答