git rebase --preserve-merges
该文档说“不保留合并冲突解决方案或手动修改合并提交”。
我了解如何通过使用来处理合并冲突rerere
,但是对合并提交的手动修改究竟是什么?是否rerere
也处理这个问题?如果没有,是否有解决方法?
git rebase --preserve-merges
该文档说“不保留合并冲突解决方案或手动修改合并提交”。
我了解如何通过使用来处理合并冲突rerere
,但是对合并提交的手动修改究竟是什么?是否rerere
也处理这个问题?如果没有,是否有解决方法?
该文档说“不保留合并冲突解决方案或手动修改合并提交”。
这句话的意思(不是很好)是 with --preserve-merges
,git rebase
实际上是重新合并。
一般来说,保留原始合并是不可能的,Git 根本不会尝试。相反,它指出原始提交M是与额外父级的合并p2,p3,...,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