【こんふりくと】

コンフリクト(マージ) とは?

最終更新:
💡 統合できない変更を、意図を確かめて解決

Gitが変更を自動で統合できず、解決を必要とする状態。同じ箇所の異なる編集のほか、削除と編集などでも起きます。変更の意図を確認して内容を直し、進行中の操作に応じて続行します。

📌 このページのポイント
コンフリクト:自動で統合できない変更元の内容:color = blackブランチAcolor = blueブランチBcolor = redどの動作が必要かを確認片側を採用、または新しく書き直す修正・検証・解決の登録進行中の操作に応じて続行
共通の内容から色を別々に変えたマージの例です。削除と編集などの競合もあり、git statusで操作を確認して、マージやリベースに合う方法で続行します。
ひよこ ひよこ
コンフリクトは何がぶつかるの?
ペンギン先生 ペンギン先生
Gitが変更を自動で統合できない状態だよ。同じ部分を別々に編集した場合が代表例だけど、一方が削除して他方が編集した場合などにも起こる。単に同じファイルを触っただけで必ず競合するわけではないんだ。
ひよこ ひよこ
変な記号は何を意味する?
ペンギン先生 ペンギン先生
通常のテキストのマージでは、<<<<<<<と=======の間に一方、=======と>>>>>>>の間に他方の内容が表示される。diff3などでは元の内容も示せるよ。バイナリや削除との競合は、この表示だけで解決できないんだ。
ひよこ ひよこ
片方を選べばいい?
ペンギン先生 ペンギン先生
変更の目的を確かめよう。青と赤のどちらを採用する例もあるけど、両方の意図に合わせて別の内容を書く必要もある。マーカーを消すだけでなく、統合後の動作を確認することが大事だよ。
ひよこ ひよこ
解決した後はどうする?
ペンギン先生 ペンギン先生
まずgit statusで進行中の操作と競合ファイルを確認する。内容を修正してテストし、git addで解決を登録する。マージならgit merge --continue、リベースならgit rebase --continueなど、その操作に合う方法で続けるんだ。
ひよこ ひよこ
競合を減らす工夫はある?
ペンギン先生 ペンギン先生
小さな変更を早く共有し、同じ範囲の長い並行作業を避けよう。統合する前には未コミットの変更も整理する。競合せず統合できても、意味や動作が食い違うことはあるから、レビューやテストは必要だよ。
もっと詳しく知りたい人へ

oursとtheirsは常に自分と相手?

通常のマージではoursは現在の側、theirsは取り込む側です。マージ方式のリベースではoursが取り込み先から再構成中の側、theirsが再適用中の作業ブランチの側となります。名前だけで選ばず、実際の差分と操作を確認してください。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「マージのコンフリクト」って出てきたら「変更を自動で統合できない状態」と思えばだいたいOK!
📖 おまけ:英語の意味
「Conflict」 = 衝突・競合
💬 ここではGitの変更の統合で起きる競合です。マージそのものと同義ではなく、すべてのマージで競合するわけではありません。

参考資料

← 用語集にもどる