Gitで競合(コンフリクト)を解消する手順をわかりやすく解説

Gitで発生する競合(コンフリクト)の原因と基本的な解消手順を初心者向けに解説します。マージやリベース時にエラーを適切に対処し、スムーズに開発を進めるための実践ガイドです。

コンフリクト(競合)とは?

Gitにおけるコンフリクトとは、同じファイルの同じ箇所に異なる変更が加えられた場合に発生する「衝突」のことです。主に以下のタイミングで発生します:

  • ブランチをマージしたとき
  • リベースを実行したとき
  • プル(
    git pull
    )で変更を取り込んだとき

コンフリクトが発生する例

例えば、2人の開発者が同じファイルの同じ行を編集し、それぞれがリモートにpushしようとした場合:

  • 開発者Aが先にpushする → 成功
  • 開発者Bがpushしようとする → 競合が発生し、pushできない

このような状況では、手動でどちらの変更を採用するかを決める必要があります。


コンフリクトが発生したときのファイルの状態

コンフリクトが発生すると、対象ファイルには以下のようなマーカーが挿入されます:

<<<<<<< HEAD
現在のブランチの変更
=======
マージしようとしたブランチの変更
>>>>>>> branch-name

この部分を手動で編集し、どの内容を採用するかを決定します。


コンフリクト解消の基本手順

ステップ1:ステータス確認

git status

→ 競合が発生しているファイルが表示される

ステップ2:該当ファイルを編集して競合箇所を修正

<<<<<<<
,
=======
,
>>>>>>>
を含む箇所を手動で修正

ステップ3:修正後、ステージング

git add [修正済みファイル名]

ステップ4:マージ(またはリベース)を完了

git commit   # マージの場合

または:

git rebase --continue   # リベース中の場合

コンフリクト解消に便利なツール

ツール特徴
VS Codeマーカーを自動検出し、GUIで競合解消が可能
GitKrakenビジュアルで直感的にマージが可能
SourceTree競合箇所を一覧で確認しながら操作できる

コンフリクトを未然に防ぐためにできること

  • こまめに**
    git pull
    **して最新の状態を保つ
  • ブランチの命名と運用ルールをチームで統一する
  • マージ前に自分の変更と他人の変更を比較・確認する

まとめ:コンフリクト解消はGitスキル向上の第一歩

Gitでのコンフリクトは避けられない課題ですが、手順を理解して冷静に対応すれば問題ありません。競合を正しく解決できるようになると、よりスムーズにチーム開発が進み、信頼されるエンジニアへの一歩となります。

編集部

編集部