2013-12-11 106 views
3

在GIT我在單個存儲庫中兩個分支 - 分支「A」和分支「B」合併2個分支爲單支

這些分支完全分離(從舊SVN倉庫兩個文件夾創建):他們不沒有共同的祖先。

這些分支中的每一個都寫入不同的目錄。 例如:分支A只寫入目錄「〜/ A」,而分支B只寫入目錄「〜/ B」(所以沒有衝突)。

我想合併這兩個分支到單個分支,所以它會看起來像單個分支存儲庫。

我曾嘗試:

  • 混帳合併 - 將合併分支,但在歷史上有兩個分支可見
  • 混帳底墊 - 它的工作原理,但提交的順序錯誤 - 我想有提交按時間排序

最好的方法是從兩個分支中獲取所有更改,按時間排序,並在某個新分支上逐一「重播」。但我不知道該怎麼做。

感謝您的回答!

編輯: 這是現在的樣子(左到右的時間):

Branch [A]:   A1----A2-------A3----A4-A5 
Branch [B]:  B1----B2----B3-B4----B5 

When using merge: 
        A1----A2-------A3----A4-A5-\ 
        B1----B2----B3-B4----B5--------\ 

When using rebase: 
        A1----A2-------A3----A4-A5-B1-B2-B3-B4-B5 

What I need: 
        B1-A1-B2-A2-B3-B4-A3-B5-A4-A5 

回答

2

您可以使用interactive rebase到提交重新排序按所需的順序。

互動底墊可以讓你重新排序的變化在一個文本文件,我建議你寫一個bash腳本編寫的列表,你在你需要的時間順序,如承諾:

pick b111111 B1 
pick a111111 A1 
pick a222222 B2 
pick a222222 A2 
pick b333333 B3 
pick a333333 A3 

...然後使用在交互式底座中。

+0

Thx,它的工作原理。我用「git cherry-pick」將一組分支合併在一起。 –