1. ホーム
  2. ギット

[解決済み] [Solved] gitでマージをプレビューするには?

2022-04-29 12:47:10

質問

あるgitブランチ(例えばメインライン)を持っていて、別の開発ブランチにマージしたいのですが、どうすればいいですか?それとも、そうする必要がありますか?

このブランチを本当にマージするかどうかを判断するために、マージによって何が行われるのか、何らかのプレビューを確認したいのですが。できれば、適用されるコミットの一覧を見ることができるようにしてほしいです。

今のところ、私が思いつく最高のものは merge --no-ff --no-commit で、次に diff HEAD .

解決方法は?

私の場合、最も効果的な解決策は、次の方法です。 マージを実行し、コンフリクトが発生した場合は中止する。 . この特定の構文は、私にとってクリーンでシンプルに感じられます。これは 戦略2 を以下に示します。

しかし、現在のブランチを確実に混乱させたくない場合、あるいはコンフリクトの有無にかかわらずマージする気になれない場合は、単にそこから新しいサブブランチを作成してそれをマージすればいいのです。

戦略1: 安全な方法 - 一時的なブランチからマージする。

git checkout mybranch
git checkout -b mynew-temporary-branch
git merge some-other-branch

そうすれば、コンフリクトを確認したいだけなら、一時的なブランチを捨てるだけでいいのです。わざわざマージを中止する必要もありませんし、自分の作業に戻ることもできます。'mybranch' をもう一度チェックアウトすれば、マージされたコードやマージの競合があなたのブランチに発生することはありません。

これは基本的に予行演習です。

戦略2:絶対にマージしたいが、コンフリクトがない場合のみマージする場合

git checkout mybranch
git merge some-other-branch

gitがコンフリクトを報告した場合(そして がある場合のみ が競合している場合、その後に行うことができます。

git merge --abort

マージが成功した場合、それを中止することはできません(リセットのみ)。

マージする準備が整っていない場合は、上記の安全な方法を使用してください。

[EDIT: 2016-Nov - ほとんどの人が "安全な方法"を探しているようなので、戦略1を2に入れ替えました。戦略2は、マージに対処する準備ができていない競合がある場合、単にマージを中止することができるという注意書きのようなものです。コメントを読む場合は覚えておいてください!]