2014-04-24 62 views
0

在以下情況下會發生什麼:Git rebase交互編輯合併功能分支?

  • 有一個主分支無盡的生命線
  • 新分支的特徵創建和結束時與主合併。該分支是後記刪除

在某些時候我需要做的是已經被認爲封閉特徵的改變(它被合併到主站和刪除)

 X --- --- (feature (branch deleted) 
    /  \     
    /   \    
    a --- --- --- M master 

我所做的是:

git rebase --interactive X 

難道源的變化,並修改了提交X.我希望有圖形不變,但得到的東西,如:

 X --- -(feature (branch deleted) 
    / \ 
    /  M 
    / /
    / /    
    a --- --- --- X master 

提交的編輯是否在合併之間傳播?與現有「未來」承諾的潛在衝突如何?

回答

1

您的新提交圖有另一個X提交,因爲rebase默認情況下不保留合併。如果你想保留合併,您需要使用--preserve-merges標誌,或-p簡稱:

git rebase -i -p <base-commit> 

注意preserving merges interactively does not work correctly when you reorder commits這是確定以其他方式一起使用它們:

待辦列表由--preserve-merges提出--interactive不 代表版本圖的拓撲結構。編輯提交併改寫 它們的提交消息應該可以正常工作,但嘗試重新排序提交往往會產生違反直覺的結果 。

另外,你確定X是你想使用的基本提交嗎?如果你想修改X,我想你應該選擇a爲基礎,而不是:

git rebase -i -p a 
+0

'X'有同時與分支的改變,這就是爲什麼我選擇了它。 – TheMeaningfulEngineer

+0

@Alan當你使用rebase時,你應該用一個不會改變***的基礎提交來調用它,這意味着你必須在***提交之前選擇提交***你要修改。 'X'是否出現在交互式數據庫編輯器中,您選擇,編輯和壓縮提交? –

+0

是的,它確實顯示,我選擇編輯。 – TheMeaningfulEngineer