💡 Tips

Gitのコンフリクト解決を初心者向けに解説|慌てないための手順

git mergegit pull で突然出る「CONFLICT」の文字。初心者がいちばん焦る瞬間だが、コンフリクトは壊れたわけではない。Gitが「ここは自動で決められないから、人間が選んで」と言っているだけだ。慌てず解決する手順を整理する。

コンフリクトとは何か

同じファイルの同じ箇所を、2つのブランチが別々に変更したとき、Gitはどちらを採用すべきか判断できない。これがコンフリクト(競合)だ。Gitは該当箇所にマーカーを入れて、人間の判断を待つ。

マーカーの読み方

コンフリクトしたファイルを開くと、こうなっている。

<<<<<<< HEAD
自分の変更
=======
相手の変更
>>>>>>> feature-branch
  • <<<<<<< HEAD=======自分側の変更
  • =======>>>>>>>相手側の変更

解決の手順

  1. コンフリクトしたファイルを開く
  2. マーカーを見て、どちらを残すか/両方をどう統合するかを決める
  3. マーカー(<<<<<<<, =======, >>>>>>>)を全部消す
  4. 正しい最終形だけを残す
  5. git add <ファイル> で解決済みとマークする
  6. git commit(mergeなら自動でメッセージが用意される)

ポイントは、マーカーの行を消し忘れないこと。残ったままコミットすると、その記号がコードに紛れ込んでバグになる。

どちらを残すか迷ったら

  • 内容を見て、両方の変更が必要なら統合する(片方だけ消すのではなく)
  • 判断がつかないときは、変更した相手に確認するのが安全
  • エディタ(VS Codeなど)のマージ支援UIを使うと、ボタンで選べて楽

焦ったときの安全策

「ぐちゃぐちゃにしてしまった」と思ったら、マージ自体を中止して元に戻せる。

git merge --abort

これで競合前の状態に戻る。落ち着いてやり直せばよい。

📚 おすすめ書籍

GitHub実践入門

プルリクエストによるチーム開発を基礎から学べる定番書

Amazonで見る →

まとめ

  • コンフリクトは故障ではなく「人間が選んで」の合図
  • マーカーで自分側/相手側を見分ける
  • 最終形を残してマーカーを全削除 → git addcommit
  • 迷ったら統合、ダメなら git merge --abort で戻れる