チームでGitHubを使って開発を始めると、最初にぶつかる壁のひとつが「コンフリクト(conflict)」です。
個人で使っているとあまり意識しないこの現象も、複数人で同じリポジトリを触り始めると頻発します。
「pushしようとしたらエラーになった」「mergeができない」といった経験がある人も多いでしょう。
実はコンフリクトは、Gitの仕組みを少し理解し、チーム全体でルールを整えるだけで大幅に減らせます。
この記事では、初心者向けに「なぜコンフリクトが起こるのか」「どう防げるのか」「起きたときどう対処するのか」をわかりやすく解説します。
コンフリクトはなぜ起こる?
コンフリクトとは、Gitが「どちらの変更を採用すべきかわからない」状態のことです。
同じファイルの同じ箇所を、複数人が別々のタイミングで変更した場合に発生します。
たとえば、AさんとBさんが同じファイルの同じ行をそれぞれ編集したとします。
Aさんが先にpushし、その後Bさんが自分の変更をpushしようとすると、Gitは「どちらが正しい?」と判断できず、コンフリクトを起こします。
よくある原因は次のようなものです。
- mainブランチを直接編集した
- pullを忘れて古い状態のままpushした
- 長期間ブランチを更新せず放置していた
つまり、コンフリクトの多くは「最新状態を共有していない」ことが原因です。
コンフリクトを防ぐための基本ルール
(1) mainブランチを直接触らない
mainブランチは、常に「動作確認済みの安定したコード」を置く場所です。
作業は必ず feature/○○
のような作業用ブランチを作って行いましょう。
mainを直接編集してしまうと、他の人の作業内容と衝突するリスクが一気に高まります。
(2) 定期的にpullして最新状態を保つ
作業を始める前に必ずgit pull origin main
を実行しましょう。
チーム全体の変更を取り込んでから作業を始めることで、差分が小さくなり、コンフリクトを防ぎやすくなります。
(3) 小さくコミット・小さくプルリク
変更範囲が広いほど、誰かと作業が被る可能性が高まります。
「1機能=1ブランチ」「1修正=1コミット」を意識して、細かく区切ることがポイントです。
(4) チーム内で担当範囲を明確に
複数人が同じファイルを同時に触るのは避けましょう。
READMEやNotionなどで「誰がどの部分を担当しているか」を共有しておくと安心です。
コンフリクトが発生したときの対処法
それでも、どんなに気をつけていてもコンフリクトは発生します。
慌てずに、次の手順で落ち着いて解消しましょう。
git pull
時にエラーメッセージが出たら、コンフリクト発生のサインです。- 該当ファイルを開くと、次のようなマークが表示されます。
<<<<<<< HEAD 自分の変更内容 ======= 他の人の変更内容 >>>>>>> origin/main
- どちらを採用するか(または両方残すか)を判断し、不要なマークを削除します。
- 修正が完了したら、
git add . git commit -m "コンフリクト解消" git push origin feature/○○
を実行して再度pushします。
VSCodeを使っている場合は、画面上で「Accept Current」「Accept Incoming」などを選択できるため、初心者でも視覚的に解消できます。
チームでの運用をスムーズにするコツ
コンフリクトを完全になくすことはできませんが、日々の運用を工夫することで発生を最小限に抑えられます。
まず大切なのは、mainブランチを守る仕組みをつくることです。
たとえば、GitHubの設定で「mainへの直接pushを禁止」し、プルリクエストを通さないとマージできないようにしておくと安全です。
また、コードレビューの文化を定着させることも重要です。
誰かの目が入ることでミスや重複作業が減り、チーム全体の品質も向上します。
さらに、ブランチ名やコミットメッセージのルールを統一しておくと、履歴が見やすくなります。
「feature/新機能名」「fix/修正内容」といった命名ルールを決めると混乱が少なくなります。
最後に、GitHub ProjectsやIssuesを使ってタスクを整理するのも効果的です。
「誰が」「どの機能を」担当しているのかが明確になり、コンフリクトの発生原因である「作業の重なり」を防げます。
まとめ
GitHubでのチーム開発は、単なるコード共有の場ではなく、チーム全員の連携がカギとなります。
コンフリクトは避けられないものですが、ルールを整え、こまめに連携をとることで大幅に減らせます。
ポイントをまとめると次の3つです。
- mainブランチは絶対に守る
- こまめにpull・pushして差分を小さくする
- チーム全員でルールと認識を共有する
この3つを意識するだけで、開発効率がぐっと上がります。