2012-02-15 16 views
2

は、トピックブランチ1をマージし、分岐マスターから開始すると、一つだけがリベースしたい場合は、しかし、コマンドは最後の2行だけのマスターを早送りリベースによってトピックブランチをマージする簡単なコマンドはありますか?

git rebase master topic 
git checkout master 
git merge topic 

ある

git merge topic 

を語りますトピックブランチに分岐するので、バリエーションが可能です。私は、次のパターンが好き:

git rebase master topic 
git rebase topic master 

地元の「トピック」の状態は分岐が保存しなければならない場合には、さらに複雑になります:

git checkout -b tmp topic 
git rebase master 
git rebase tmp master 
git branch -d tmp 

は、そのための簡単なコマンドはありますか?トピックブランチを動かすことなく、CLIでgit-mergeと同じように簡単に動作しますが、実際にはリベースを実行しますか?

答えて

2

これを実行する完璧なコマンドはありませんが、かなり近い秒があります。

topicがきれいに競合することなくmasterの上に収まると仮定すると、これはmasterブランチから動作します:

git cherry-pick master..topic 

master..topictopicの変化のセットではなくmaster、そしてあるために、それらをされてチェリーピッキングtopicがきれいにmasterにある場合、事実上リベースします。 (topicを維持するためまたは3)2 - コマンドの完全な忠実度のケースについては

、私はあなたがそこに持っているように、私は明確にするためrebaseupdate-refを行うだろう2 rebaseのしないだろう。

+0

+1特に、あなたがこれをスクリプトしている場合、update-refには注意が必要です。あなたは何も間違っていないことを確かめたいと思っています。本当に早送りです。 – Cascabel

1

これを実行する組み込み関数はありません。これは複雑なアクションのシーケンスで、実装するのは簡単ではありません。何が起こると予想されますか?

リバースを使用して早送りを行うなど気の利いたことを気にしない場合は、git push . topic:masterを使用することをお勧めします。これにより、少なくとも早送りが保証されます。

git merge-rebased master topicgit rebase master topic && git checkout master && git merge topicなどの任意のバリエーションを意味するようにエイリアス/スクリプトを作成するのが最善です。

関連する問題