2017-04-19 6 views
2

は私のコミットは、次のようになりたとマージ: enter image description here を今、3ウェイマージを実行するために、私が発行します。アドバンスマスターブランチ3ウェイ後

git checkout iss53 
git merge master 

は、競合がないと仮定すると、私のログを今すぐ enter image description here masterをC6に進めるにはどうすればよいですか?

図はPro Gitのものを採用しています。

+0

サイド質問:あなたはそのイラストをどのように作成したのですか? –

+0

これは素敵な図です!私は 'C6を'の下の行に入れたいと思っていました。 – torek

+0

Lasse V. Karlsen and torek:私は最初からダイアグラムを作成しなかったのですが、[Pro Git](http://git-scm.com/book/)のPhotoshop版です。私は必要に応じてボックスや矢を動かすだけでした。私は引用を含めるために自分の投稿を編集しました。 – flow2k

答えて

3
git checkout master 
git merge iss53 

は早送りをすることによってそれを行います。

+0

Gitにこの「早送り」を許可する必要があることに注意してください。しかし、これはデフォルトです(これは簡単で正しい回答です)。おそらく、私はこれを "あなたが早送りをすることから防ぐ"べきではないと言います。 " – torek

3

これはあなたがこれに対処する通常の方法ではありません。通常、iss53masterにマージするだけです。これは通常、masterとのマージ後にiss53をプッシュしてプル要求を作成することで実行されます。次に、iss53masterにマージされ、2つのブランチはその正確な時点で機能的に等価になります。

あなたの質問への答えは、リテラルgit branch -fを使用して得することができます。

git branch -f master C5 

iss53のHEADが指している先のコミットのSHA-1ハッシュでC5を交換してください。しかし、再び、私はこれを正常にはしません。

master: C0 -- C1 -- C2 -- C4 
        \ 
iss53:    C3 -- C5 

チェックアウトiss53masterにリベース:

git checkout iss53 
git rebase master 

別のアプローチここでは、リベースの枝を使用してmastermasteriss53をリベースした後、早送りになりますこれは図のようになります:

master: C0 -- C1 -- C2 -- C4 
          \ 
iss53:      C3' -- C5' 

iss53masterにプッシュし、この後者のブランチを早送りすることができます。これは、このように見てmasterを残すでしょう:

master: C0 -- C1 -- C2 -- C4 -- C3' -- C5' 
関連する問題