假设我有一个这样的仓库:如何在合并提交中移动提交?
I --- C --- M master
\ /
`- A -´ topic
其中M
是一个合并提交合并topic
为master
。
后来我发现C
的错误,所以我做出承诺的master
分支修复它,就M
顶部:
I --- C --- M --- C1 master
\ /
`- A -´ topic
,但最好我想历史上是这样的:
I --- C --- C1 --- M master
\ /
`- A --------´ topic
如何重写历史记录,使C1
出现在合并前M
?
我可以删除M
,应用由C1
所做的补丁,并再次合并topic
为master
,再次解决所有的冲突,但我想避免的努力,并且我也希望保留原始提交信息(作者,日期等),如果可能的话,这又排除了git commit
。我希望可以用git rebase
,但我失败了,无论是-p
还是-i
。
由'git rebase -p'创建的合并提交是否已正确创建?如其中,其父母是否正确“C1”和“A”?在重新绑定合并时,我遇到了问题,因为合并更改以正常提交而不是合并提交重播。 – LopSae
@LopSae:是的,合并提交是在C1'和A之上进行的。保留合并是'-p'(又名'--preserve-merges')的一点,但是有一个关于使用'-p'和'-i'一起在'git-rebase(1)'中提到。 – musiphil