2017-01-02 2 views
5

Моей истории дерева в настоящее время выглядит следующим образом: enter image description hereмерзавца: двигаться коммят до слияния

Я хотел бы обратиться совершить b3 к мастеру отрасли. Конечно, я мог бы объединить снова разветвляются feature в master но история будет выглядеть неаккуратно с двумя слияния совершает (a6 и a4, что это просто бесполезно сейчас): enter image description here


Таким образом, то, что я хотел бы знать, is Как сделать a4 сейчас указать на b3 вместо b2? enter image description here Я признаю SHA1 s будет отличаться, и, таким образом, совершает будет переименован a4' и a5'

+1

От мастера, сделайте 'мерзавец перебазироваться -p b3'. Это должно сохранить слияние, но переместить его после 'b3'. – poke

+0

@poke thx! Должен ли я быть в состоянии 'a4' для этого, или он работает, если я на' a5'? – ebo

+0

Он должен работать на любом из них. – poke

ответ

2

Из главной ветви, вы можете просто перебазироваться на новый b3, сохраняя при этом сливается с использованием --preserve-merges option (или -p в краткое):

git rebase -p feature 

Таким образом, когда Git rebases, он не будет пытаться сгладить слияния, но вместо того, чтобы воссоздать его на вершине новой базы фиксации. Так что ваша история будет выглядеть следующим образом:

       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 re * создает * (т. Е. Делает * новый *) слияние, которое вытесняет старый. Во всяком случае, поддержали. :-) – torek

+1

@torek Да, я использую понятие 'x'', чтобы обозначить, что это воссозданная фиксация, основанная на исходном' x' :) – poke

Смежные вопросы