2017-01-02 214 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