実際にマージする前に、2 つのブランチ間のマージ結果を確認する方法はありますか?
ブランチ A をブランチ B にマージしようとする場合、通常、B から一時的なブランチをチェックアウトし、それをブランチ A とマージしてから、差分パッチを作成するか、その一時的なブランチにチェックアウトして、マージする前にすべてが正常に機能しているかどうかを確認します。 AからBへ。
git はこれを実現するコマンドや機能を提供していますか?
実際にマージする前に、2 つのブランチ間のマージ結果を確認する方法はありますか?
ブランチ A をブランチ B にマージしようとする場合、通常、B から一時的なブランチをチェックアウトし、それをブランチ A とマージしてから、差分パッチを作成するか、その一時的なブランチにチェックアウトして、マージする前にすべてが正常に機能しているかどうかを確認します。 AからBへ。
git はこれを実現するコマンドや機能を提供していますか?
マリアン・タイセンが示唆したように、コミットせずにマージを行うためにこれを行うことができます
git merge --no-commit <branchname>
そのマージを取り消すことができます
git reset --hard
また、Git では気が変わって前の状態に戻るのはいつでも簡単であることを覚えておいてください。コミットを含む完全なマージを実行し、完全な結果を検査できます。気が変わった場合は、次のことができます
git reset --hard HEAD^
マージを破棄し、マージ前のコミットに戻ります。
実際、マージ解決中の任意の時点で、次のことができます。
git reset --merge
マージを中止し、マージの変更のみを破棄します。
私はこれを「コード レビュー ワークフロー」と呼び、常に実行しています。
git merge --no-commit --no-ff branchname
フラグがなけれ--no-ff
ば、Git が早送りを実行できる場合は、それを実行します。(予想通り、早送りの場合と同様に、作成するマージ コミットはありません。)
.gitconfig
便宜上、次のエイリアスを設定しています。
rev = merge --no-ff --no-commit
私が簡単にできるように:
git rev branchname
すべての機能は別々のブランチで開発され、各機能は作成者以外の誰かによってレビューおよびマージされるという考え方です。他の回答が指摘したように、次の方法でマージを中止できます。
git reset --merge
作成者にさらに変更を依頼します。
マージ コミットのみのログを表示するには、次の別のエイリアスを使用します。
revlog = log --first-parent
このようにして、ログは大きなステップのタイムラインになります。コミットごとではなく、機能ごとです。
なぜ手間をかけるのですか?マージを実行してテストし、気に入らない場合はgit reset --hard HEAD^
マージ前の状態に戻します。一時的または途中のマージを行うと、マージを維持するかどうかに関係なく、作業が増えるだけです。