Gitのコンフリクト解決を初心者向けに解説|慌てないための手順
git merge や git pull で突然出る「CONFLICT」の文字。初心者がいちばん焦る瞬間だが、コンフリクトは壊れたわけではない。Gitが「ここは自動で決められないから、人間が選んで」と言っているだけだ。慌てず解決する手順を整理する。
コンフリクトとは何か
同じファイルの同じ箇所を、2つのブランチが別々に変更したとき、Gitはどちらを採用すべきか判断できない。これがコンフリクト(競合)だ。Gitは該当箇所にマーカーを入れて、人間の判断を待つ。
マーカーの読み方
コンフリクトしたファイルを開くと、こうなっている。
<<<<<<< HEAD
自分の変更
=======
相手の変更
>>>>>>> feature-branch
<<<<<<< HEAD~=======が自分側の変更=======~>>>>>>>が相手側の変更
解決の手順
- コンフリクトしたファイルを開く
- マーカーを見て、どちらを残すか/両方をどう統合するかを決める
- マーカー(
<<<<<<<,=======,>>>>>>>)を全部消す - 正しい最終形だけを残す
git add <ファイル>で解決済みとマークするgit commit(mergeなら自動でメッセージが用意される)
ポイントは、マーカーの行を消し忘れないこと。残ったままコミットすると、その記号がコードに紛れ込んでバグになる。
どちらを残すか迷ったら
- 内容を見て、両方の変更が必要なら統合する(片方だけ消すのではなく)
- 判断がつかないときは、変更した相手に確認するのが安全
- エディタ(VS Codeなど)のマージ支援UIを使うと、ボタンで選べて楽
焦ったときの安全策
「ぐちゃぐちゃにしてしまった」と思ったら、マージ自体を中止して元に戻せる。
git merge --abort
これで競合前の状態に戻る。落ち着いてやり直せばよい。
まとめ
- コンフリクトは故障ではなく「人間が選んで」の合図
- マーカーで自分側/相手側を見分ける
- 最終形を残してマーカーを全削除 →
git add→commit - 迷ったら統合、ダメなら
git merge --abortで戻れる