は私のコミットは、次のようになりたとマージ: を今、3ウェイマージを実行するために、私が発行します。アドバンスマスターブランチ3ウェイ後
git checkout iss53
git merge master
は、競合がないと仮定すると、私のログを今すぐ master
をC6に進めるにはどうすればよいですか?
図はPro Gitのものを採用しています。
は私のコミットは、次のようになりたとマージ: を今、3ウェイマージを実行するために、私が発行します。アドバンスマスターブランチ3ウェイ後
git checkout iss53
git merge master
は、競合がないと仮定すると、私のログを今すぐ master
をC6に進めるにはどうすればよいですか?
図はPro Gitのものを採用しています。
git checkout master
git merge iss53
は早送りをすることによってそれを行います。
Gitにこの「早送り」を許可する必要があることに注意してください。しかし、これはデフォルトです(これは簡単で正しい回答です)。おそらく、私はこれを "あなたが早送りをすることから防ぐ"べきではないと言います。 " – torek
これはあなたがこれに対処する通常の方法ではありません。通常、iss53
をmaster
にマージするだけです。これは通常、master
とのマージ後にiss53
をプッシュしてプル要求を作成することで実行されます。次に、iss53
はmaster
にマージされ、2つのブランチはその正確な時点で機能的に等価になります。
あなたの質問への答えは、リテラルgit branch -f
を使用して得することができます。
git branch -f master C5
とiss53
のHEADが指している先のコミットのSHA-1ハッシュでC5
を交換してください。しかし、再び、私はこれを正常にはしません。
master: C0 -- C1 -- C2 -- C4
\
iss53: C3 -- C5
チェックアウトiss53
、master
にリベース:
git checkout iss53
git rebase master
後
別のアプローチここでは、リベースの枝を使用してmaster
をmaster
にiss53
をリベースした後、早送りになりますこれは図のようになります:
master: C0 -- C1 -- C2 -- C4
\
iss53: C3' -- C5'
iss53
をmaster
にプッシュし、この後者のブランチを早送りすることができます。これは、このように見てmaster
を残すでしょう:
master: C0 -- C1 -- C2 -- C4 -- C3' -- C5'
サイド質問:あなたはそのイラストをどのように作成したのですか? –
これは素敵な図です!私は 'C6を'の下の行に入れたいと思っていました。 – torek
Lasse V. Karlsen and torek:私は最初からダイアグラムを作成しなかったのですが、[Pro Git](http://git-scm.com/book/)のPhotoshop版です。私は必要に応じてボックスや矢を動かすだけでした。私は引用を含めるために自分の投稿を編集しました。 – flow2k