Gitコンフリクトを実際に起こして解決する

入門 | 13分 で読める | 2026.06.18

公式ドキュメント

今回やること

この記事では、学習用リポジトリで意図的にコンフリクトを起こし、解決します。

コンフリクトはエラーではなく、Gitが「どちらを採用するか人間に確認している状態」です。

前提条件

  • Gitリポジトリがある
  • 作業内容を失ってよい学習用環境で試す
  • git status が使える

Step 1: ファイルを用意する

echo "title: Git Practice" > memo.txt
git add memo.txt
git commit -m "docs: add memo"

Step 2: ブランチを作る

git switch -c feature/change-title

同じ行を変更します。

echo "title: Feature Title" > memo.txt
git add memo.txt
git commit -m "docs: update title in feature"

Step 3: main側でも同じ行を変更する

git switch main
echo "title: Main Title" > memo.txt
git add memo.txt
git commit -m "docs: update title in main"

Step 4: mergeしてコンフリクトを起こす

git merge feature/change-title

同じ行を別々に変更したため、コンフリクトが起きます。

Step 5: 状態を確認する

git status

コンフリクトしているファイルが表示されます。

Step 6: ファイルを開いて直す

memo.txt には、次のような印が入ります。

<<<<<<< HEAD
title: Main Title
=======
title: Feature Title
>>>>>>> feature/change-title

どちらを残すか、または両方を組み合わせるかを人間が決めます。

title: Merged Title

コンフリクトの印を残さないようにします。

Step 7: 解決をGitに伝える

git add memo.txt
git commit

エディタが開いたら、マージコミットメッセージを確認して保存します。

Step 8: 履歴を確認する

git log --oneline --graph

マージコミットが作られていることを確認します。

よくあるエラー

状況よくある原因確認すること
印が残ったままcommitした<<<<<<< を消していないファイル内を検索する
どちらを残すかわからない変更意図を確認していない差分と目的を読む
mergeをやめたいコンフリクト解決前git merge --abort を検討
解決したのに終わらないgit add していないgit status を見る

まとめ

コンフリクトは、Gitが自動で判断できない変更がぶつかった状態です。git status で対象ファイルを確認し、ファイル内の印を消して正しい内容に直し、git addgit commit で解決を記録します。

参考リソース

← 一覧に戻る
PR
PR
PR
PR