2013-05-27 3 views
11

実際にマージする前に2つのブランチ間のマージの結果を確認する方法はありますか?実際のマージの前にgit-mergeの結果を確認してください

ブランチAをブランチBにマージしようとすると、通常はブランチAからブランチをマージして差分パッチを作成するか、その一時ブランチにチェックアウトしてすべてがAをBにマージする前に正常に動作しています。

gitはこれを実行するコマンドまたは機能を提供していますか?あなたはそれが常に容易であることを覚えて、また

git reset --hard 

と合併ことの外にバックアップすることができます

git merge --no-commit <branchname> 

をコミットせずにマージを行うには、これを行うことができます

+3

'git merge --no-commit' –

答えて

18

マリアンTheisenが示唆したように、 Gitでバックアップしてください。あなたは完全な結果を検査し、コミットしてあなたの心を変更する場合は、

git reset --hard HEAD^ 

マージを捨て、バックマージ前にコミットであることをすることができますを含む、完全なマージを行うことができます。

実際には、マージ解像度中の任意の時点で、あなたは

git reset --merge 

がマージを中止し、わずかマージ変更を投げるために行うことができます。

2

なぜトラブルを起こすのですか?マージを行い、テストし、それが気に入らなければgit reset --hard HEAD^を押して、マージ前の状態に戻します。一時的または半二重のマージを行うと、マージを維持するかどうかにかかわらず、作業が増えます。

11

私はこれを「コードレビューワークフロー」と呼び、いつもそうしています。 Gitは早送りを行うことができれば、それはそれを行うだろう--no-ffフラグなし

git merge --no-commit --no-ff branchname 

、。 (期待されるように、早送りの場合のように、何のマージが作成するためにコミットしていないがあります。)私は便宜上.gitconfigでこのエイリアスのセットアップ持って

:だから

rev = merge --no-ff --no-commit 

を私は単に行うことができます。

アイデアは、すべての機能が別々のブランチで開発され、各機能がレビューされ、作成者以外の誰かによってマージされることです。他の回答が指摘したようにあなたがマージを中止することができます

git reset --merge 

とより多くの変更を行うために、著者をお願いします。唯一のマージでログを表示するには

は、私は、この他の別名を使用するコミット:

revlog = log --first-parent 

この方法では、ログは大きなステップのタイムラインを次のようになります。機能によって、機能ではなく、コミットによってコミット。

+0

早送りマージでリスクはありません。早送りマージが最高です:リスクなし、ポリシングなし、ブランチポインタを前方に移動するだけです。なぜ誰もそんなに気にせずに--no-ffフラグが私にとって謎であることを使用するでしょう。もし誰かがこれに何か光を当てることができるなら、そうしてください。私自身の経験から、それを決定する前に早送りの意味を理解するよう警告します。 –

+0

@PaulvanLeeuwen私はあなたの感情に同意します。しかし、これは "--no-ff'フラグを気軽に使う"というケースではありません。これは、マージ前の変更を検討する特定の問題に対する答えです。早送りはマージではありませんが、 '--no-ff'を使うことはOPの意図と一致するようです。 – janos

関連する問題