error
Gitの Merge Conflict (競合) が発生する仕組みと安全な解消手順
チーム開発においてGitを使用していると必ず直面する「Merge Conflict(マージ競合)」の仕組みと、コードを壊さずに安全に解消するための手順を解説します。
【コンフリクトはなぜ起きるのか?】
Gitは非常に賢いバージョン管理システムですが、唯一「同じファイルの、全く同じ行」を複数の人間が同時に書き換えてしまった場合、どちらの変更を優先すべきか自動で判断することができません。この状態に陥った際、Gitは安全のためにマージ(統合)処理を一時停止し、人間に手動での解決を求めます。これがコンフリクトです。
【解消のための具体的なステップ】
1. 競合箇所の特定
コンフリクトが発生した状態(`(main|MERGING)` のような表示)で対象のファイルを開くと、Gitが挿入した特殊な記号が見つかります。
`<<<<<<< HEAD`
(あなたが今いるブランチのコード)
`=======`
(マージしようとしている相手のコード)
`>>>>>>> feature-branch`
2. 手動でのコード修正
VSCodeなどのモダンなエディタを使用している場合、この記号の近くに「現在の変更を取り込む」「両方の変更を取り込む」などの便利なボタンが表示されます。これらを利用するか、手動で記号(`<` `=` `>`)を削除し、最終的に残したい正しいコードの形に整えます。
3. 解決の宣言とコミット
ファイルの修正が終わったら、ターミナルで `git add 修正したファイル名` を実行し、Gitに「競合を解決した」と伝えます。その後、`git commit` を実行することで、停止していたマージ処理が完了し、新たなマージコミットが作成されます。
コンフリクトを防ぐための最大のコツは、ブランチの寿命を短くし、こまめにメインブランチの変更を自分の手元にプル(`git pull`)して同期させておくことです。