2017-01-02 435 views
5

我的歷史樹目前看起來是這樣的: enter image description here混帳:移動提交前合併

我想申請提交b3分支主。當然,我可以再次合併分支featuremaster但歷史會顯得凌亂兩個合併提交(a6,並且a4這只是沒用了): enter image description here


因此,想什麼我知道,是如何使a4現在指向b3而不是b2 enter image description here 我承認SHA1旨意是不同的,因此承諾將改名爲a4'a5'

+1

從主,做'git的變基-p b3'。這應該保留合併,但在「b3」之後移動它。 – poke

+0

@poke thx!我應該在'a4'狀態下執行此操作,還是在'a5'上運行? – ebo

+0

它應該在其中任何一個上工作。 – poke

回答

2

從主分支,你可以簡單地重訂到新b3,同時保留使用--preserve-merges option(或-p合併短):

git rebase -p feature 

這樣,當Git的變基,它不會試圖壓平合併,而是重新創建它的新基地犯下的頂部。所以,你的歷史看起來就像這樣:

       master 
           ↓ 
a1 -- a2 -- a3 --------- a4' -- a5' 
     \    /
     \   /
      b1 -- b2 -- b3 
         ↑ 
        feature 

相比有以下不使用--preserve-merges標誌時:

         master 
             ↓ 
a1 -- a2     a3' -- a4' -- a5' 
     \    /
     \   /
      b1 -- b2 -- b3 
         ↑ 
        feature 
+0

OP應該(並且我明白了)注意到結果是一個新的(不同的)合併,具有不同的散列和不同的樹。正如你所說,rebase重新*創建*(即,一個* new *)合併取代舊的合併。無論如何,upvoted。 :-) – torek

+1

@torek是的,我使用'x''的概念來表示它是基於原始'x'的重新創建的提交:) – poke