假設我有一個這樣的倉庫:如何在合併提交中移動提交?
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