2つの並行世界を合流させる
ブランチで作った並行世界を、元の世界に合流させる作業をマージと呼びます。多くの場合、これは自動で問題なく進みます。
コンフリクトが起きる瞬間
問題が起きるのは、2つの並行世界で、ファイルの同じ場所を、それぞれ違う内容に書き換えていたときです。Gitは「どちらを正解として採用すればいいか」を自分では判断できません。そこで「これは人間に決めてもらうしかない」と、作業を止めて教えてくれます。これがマージコンフリクトです。
壊れたわけでも、失敗したわけでもありません。Gitが正直に「分からない」と言っている状態、と捉えると身構えずに済みます。
どう対処するか
コンフリクトが起きたファイルには、どちらの内容がぶつかっているかを示す印(<<<<<<<のような記号)が挿入されます。中身を読んで、どちらを残すか(あるいは両方混ぜるか)を自分で決めて書き直し、改めてコミットすれば解決です。
コンフリクトを減らすコツ
- こまめにコミットする(変更が小さいほど、ぶつかる範囲も小さくなる)
- 長期間分かれたままのブランチを作らない
- 心配なら、マージする前に一度
git statusで状態を確認する
コマンドの詳細はGit基礎コマンド一覧を参照してください。