Conflict(コンフリクト)とは
Conflict(コンフリクト)とは
意味と技術的な定義
Conflict(コンフリクト)とは、Gitでマージやリベースなどの統合作業を行う際に、同じファイルの同じ行に複数の変更が加わっており、どちらを適用すべきかGitが自動で判断できない状態を指します。
この状態が発生すると、Gitは次のようなメッセージを出し、手動解決を求めて処理を停止します。
Auto-merging main.js
CONFLICT (content): Merge conflict in main.js
Automatic merge failed; fix conflicts and then commit the result.なぜConflictが起こるのか:発生の背景
以下のような状況でConflictがよく発生します:
- チームメンバーが同じファイルの同じ箇所を別ブランチで変更
 mainやdevelopブランチが頻繁に更新されている中で長期間放置されたPRgit rebaseで古い履歴に新しい変更を適用しようとした場合
特にUIロジック、ルーティング、グローバル設定ファイル(例:package.json, routes.ts)などはConflictが起こりやすいです。
Conflictの解決手順(基本フロー)
- 
対象ファイルを開く
Gitは競合箇所を次のように表示します:<<<<<<< HEAD 自分の変更内容 ======= 他ブランチの変更内容 >>>>>>> feature/other-branch - 
どちらの変更を残すか判断し、手動で修正
 - 
修正後、ファイルをステージング
git add main.js - 
マージ完了をGitに伝える(マージの場合)
git commitまたは、rebase中の完了操作:
git rebase --continue 
実務での対策と防止策
✔ PRを定期的に最新ブランチに追従させる
- 長期放置されたPRはConflictの温床
 - チームルールとして「週1回 
mainをマージ/rebase」などの運用を設定 
✔ ファイルの分割・責務分離
- 複数人で頻繁に触るファイルは機能単位で分割しておくとConflictが起こりにくい
 settings.js→settings/user.js,settings/theme.jsのように分離するのが有効
会話例:レビュー時のConflict通知
Reviewer:
  このPR、mainとConflictしてます。先に解消してもらえますか?
Developer:
  了解です。main取り込んで rebase してから再Pushします。注意点:解消したつもりがロジック破壊になっていることも
Conflictは技術的には解消されても、ビジネスロジックやUI整合性が壊れてしまっていることが少なくありません。
解決後のセルフチェック例
- 期待する値が残っているか?
 - 重要なテストケースが削除されていないか?
 - 前後処理の整合性が取れているか?
 
まとめ:Conflictは「人間の判断」を必要とする合流地点
- コンフリクトはGitが判断できない“選択”を開発者に委ねている状態
 - 単なる技術的処理ではなく、設計・ロジックの整合性まで確認する責任が伴う
 - チームとしての予防設計と、落ち着いた解決が大切