コンフリクトが起きる条件

📝 問題の再掲

Q28: コンフリクト(衝突)が起きるのはどんなとき?

正答: 同じファイルの同じ行を別々のブランチで変更したとき

⚠️ よくある間違い

コンフリクトが起きると「壊れた!」とパニックになりがちですが、Gitが「どちらを採用するか自分で決めてね」と聞いているだけです。落ち着いて対処すれば大丈夫です。

📖 段階的な説明

ステップ1:コンフリクトの条件

以下のすべてが揃ったとき発生します:

  1. 同じファイルの
  2. 同じ行を
  3. 別々のブランチで変更して
  4. マージしようとした

ステップ2:コンフリクトマーカーの読み方

<<<<<<< HEAD
ここは main ブランチの内容
=======
ここは feature ブランチの内容
>>>>>>> feature
  • <<<<<<< HEAD から ======= まで:今いるブランチの内容
  • ======= から >>>>>>> まで:マージしようとしたブランチの内容

ステップ3:解決手順

  1. ファイルを開いてコンフリクトマーカーを確認
  2. 正しい内容を残す(片方だけ、または両方を組み合わせる)
  3. マーカー(<<< === >>>)を削除
  4. git add ファイル名
  5. git commit

💻 コード例

# コンフリクト発生時のファイル内容
<<<<<<< HEAD
<h1>こんにちは</h1>
=======
<h1>Hello</h1>
>>>>>>> feature-english

# 解決後(正しい内容だけ残す)
<h1>こんにちは / Hello</h1>

# 解決をGitに伝える
git add index.html
git commit -m "コンフリクトを解決"

🔗 関連知識

  • 別のファイルを変更した場合や、同じファイルでも別の行なら自動でマージされます
  • VS Code にはコンフリクト解決を助けるボタン(Accept Current / Accept Incoming)があります

✅ 確認問題

Q: main で index.html の1行目を変更し、feature で index.html の10行目を変更してマージした場合、コンフリクトは起きる?

答えを見る

起きません。同じファイルでも変更した行が違えば、Gitが自動でマージしてくれます。コンフリクトは「同じ行」を変更した場合のみ発生します。

← ドリルに戻る