2013-03-29 41 views
2

我想知道這是否有可能「傳播」分支的rebase。讓我們考慮以下設置: Git:「傳播」重新分配到同一根的其他分支

branchA *-*-*-*-*-*-<*> 
       \ 
     branchB *-*-*-* 
         \ 
       branchC *-*-*-* 

如果對branchA一些變化,branchB創建之後發生這種情況,可能需要

branchB的底墊。但是如果我們重新啓動分支B,以便從提交< *開始,branchC將不會自動更新。

您是否可能知道在Git中是否存在一種方法來自動重新構造具有共同祖先的分支,當這個祖先分支被重新設計時(換句話說就是「傳播」rebase)?

非常感謝您提前!

+0

在git分支只是提交的指針。所以我懷疑git中有一個選項可以在父分支重新綁定時自動重新綁定所有子分支。儘管可以使用腳本。 – Tuxdude

+0

謝謝!如果我正確地理解了你,Git分支就沒有樹狀結構 - 它是正確的嗎? – Tomek

+2

基本上。 git中的提交指向它的父代,因此它可以創建樹狀結構。但是git中的分支只是一個指向提交的指針。從分支中,您可以訪問分支提交指向的較早提交。但是branchB找不到branchC。 –

回答

2

不,git不包含該功能。但你可以自己做。 Rebase branchC,然後查看它的歷史記錄以找到匹配branchB指向的提交。注意它的SHA和運行:

git branch -f branchB *newSHA* 

像這樣的情況應該是非常罕見的,因爲你不應該重寫歷史的出版和當地未發佈歷史通常是直的和無支鏈的。

+0

非常感謝。我設法通過使用rebase --onto命令來實現這一目標。謝謝! – Tomek

+0

其實我有一個相關的問題 - 當我將一個分支合併到另一個分支時,我需要每次重新分配「主」分支時重新合併分支?換句話說 - 爲了防止不必要的數據庫,我應該總是刪除已經合併到其他分支的分支? – Tomek

+0

不要混合重新綁定和合並!重新合併會導致可怕的混亂。所以要回答你的問題:甚至不要那裏:)。 – Chronial

相關問題