マージの仕組みとコンフリクトの原因

📝 問題の再掲

復習Q9: feature ブランチの変更を main に統合するコマンドは?

正答: git merge feature(main にいる状態で実行)

⚠️ よくある間違い

  • マージ = 上書きだと思ってしまう(実際は「統合」)
  • コンフリクトが怖くてマージを避ける
  • コンフリクトの表示(<<< === >>>)の読み方がわからない

📖 段階的な説明

ステップ1:マージとは

2つのブランチの変更を1つにまとめる操作です。片方を消すのではなく、両方の変更を合体させます。

ステップ2:自動マージ(問題なし)

別々のファイルや、同じファイルでも別の行を変更した場合、Git が自動で統合してくれます。

main:    1行目を変更
feature: 5行目を変更

→ Git が自動で両方の変更を統合 ✅

ステップ3:コンフリクト(手動解決が必要)

同じファイルの同じ行を2つのブランチで別々に変更した場合、Git はどちらを採用すべきかわかりません。

main:    3行目を「こんにちは」に変更
feature: 3行目を「Hello」に変更

→ どっちを採用? → コンフリクト発生!

ステップ4:コンフリクトの解決手順

コンフリクトが起きると、ファイルに以下のような印がつきます:

<<<<<<< HEAD
こんにちは
=======
Hello
>>>>>>> feature

↑ HEAD(main)の内容
↑ ======= で区切り
↑ feature ブランチの内容

解決方法:

  1. どちらか(または両方を組み合わせて)正しい内容に書き換える
  2. <<<<<<< ======= >>>>>>> の行を削除する
  3. git addgit commit で解決を記録する

ステップ5:コンフリクトを防ぐコツ

  • こまめに git pull して最新の状態を取り込む
  • 小さい単位でコミットする(大きな変更を一気にしない)
  • チームで「誰がどのファイルを触るか」を共有する

💡 たとえ話

2人が同じノートの同じ行に別のことを書いた

Aさんが3行目に「りんご」と書き、Bさんも3行目に「バナナ」と書いた。ノートを1冊にまとめるとき、どっちを残す? → 2人で話し合って決める = コンフリクト解決

✅ 確認問題

Q: コンフリクトが発生するのはどんなとき?

A: 別のファイルを変更したとき

B: 同じファイルの同じ行を2つのブランチで変更したとき

答えを見る

B。別のファイルや別の行の変更は Git が自動でマージできます。同じ行を両方で変更したときだけコンフリクトが起きます。

← ドリルに戻る