コンフリクトが起きる条件
📝 問題の再掲
Q28: コンフリクト(衝突)が起きるのはどんなとき?
正答: 同じファイルの同じ行を別々のブランチで変更したとき
⚠️ よくある間違い
コンフリクトが起きると「壊れた!」とパニックになりがちですが、Gitが「どちらを採用するか自分で決めてね」と聞いているだけです。落ち着いて対処すれば大丈夫です。
📖 段階的な説明
ステップ1:コンフリクトの条件
以下のすべてが揃ったとき発生します:
- 同じファイルの
- 同じ行を
- 別々のブランチで変更して
- マージしようとした
ステップ2:コンフリクトマーカーの読み方
<<<<<<< HEAD
ここは main ブランチの内容
=======
ここは feature ブランチの内容
>>>>>>> feature
<<<<<<< HEADから=======まで:今いるブランチの内容=======から>>>>>>>まで:マージしようとしたブランチの内容
ステップ3:解決手順
- ファイルを開いてコンフリクトマーカーを確認
- 正しい内容を残す(片方だけ、または両方を組み合わせる)
- マーカー(
<<<===>>>)を削除 git add ファイル名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が自動でマージしてくれます。コンフリクトは「同じ行」を変更した場合のみ発生します。