コンフリクトが起きたら、どう直しますか

なぜ起きるか、印の読み方、どちらを残すかの決め方、直したあとの確かめの 4 点で答える問い。慌てずに直せる手順を見せます。

こう聞かれます

  • 「コンフリクトが起きたら、どう直しますか」
  • 「コンフリクトはなぜ起きるのですか」
  • 「チームでコンフリクトを減らすために、何か工夫していますか」

面接官が見ている点

  • コンフリクトを「壊れた」ではなく、Git が人に判断を求めている状態だと分かっているか
  • 印の意味を読み、どちらを残すかを自分だけで決めず、書いた人と話せるか
  • 直したあとに動かして確かめてからコミットする、という最後の一手を言えるか

短い答え

  • 2 つのブランチで同じ所を別々に直すと、Git がどちらを残すか決められず、コンフリクトになります。
  • ファイルに入った印を読み、残す形に書き直して印を消し、git add してからコミットで取り込みを終えます。
  • どちらを残すか迷うときは書いた人と話し、直したあとはテストや画面で動きを確かめます。

少し詳しい答え

わざと起こして印を読む

main と feature の両方で、同じ行を別の色に書き換えてから取り込みます。

ターミナル

git init -q -b main demo
cd demo
git config user.name Aya
git config user.email a@x.jp
echo "色は青" > color.txt
git add color.txt
git commit -q -m "最初の色"
git switch -q -c feature
echo "色は緑" > color.txt
git commit -q -am "緑にする"
git switch -q main
echo "色は赤" > color.txt
git commit -q -am "赤にする"
git merge feature
git status --short
cat color.txt
echo "色は緑" > color.txt
git add color.txt
git commit -q --no-edit
git log --format=%s
Auto-merging color.txt
CONFLICT (content): Merge conflict in color.txt
Automatic merge failed; fix conflicts and then commit the result.
UU color.txt
<<<<<<< HEAD
色は赤
=======
色は緑
>>>>>>> feature
Merge branch 'feature'
赤にする
緑にする
最初の色

UU は、両方の側で直されて取り込みが止まっているファイルの印です。<<<<<<< HEAD から ======= までがいまいるブランチ (main) の中身、======= から >>>>>>> feature までが取り込もうとしたブランチの中身です。ここでは緑を残すと決めて書き直し、印を消して add し、コミットで取り込みを終えました。

直すときの手順

  • git status で、どのファイルが止まっているかを見る
  • 印の上下を読み、どちらを残すか、両方を合わせるかを決める。意図が分からなければ、その行を書いた人に聞く
  • 印を全部消して保存し、add してコミットする
  • アプリを動かし、テストを回して、合わせた結果が壊れていないかを確かめる

途中で分からなくなったら、git merge --abort で取り込む前の状態に戻せます。

作った物と結ぶなら、たとえば「チームの制作で同じ設定ファイルを 2 人で直してコンフリクトが起きたとき、相手と画面を見ながら両方の項目を残す形に直し、起動して確かめてからコミットしました」のように話します。

よくある間違い

  • 「コンフリクトは Git の不具合」と言う 同じ所が別々に直されたので、人に決めてもらうために止まっているだけです
  • 自分の側だけを残して終える相手の直しを黙って消すと、その機能が壊れます。迷ったら書いた人に確かめます
  • 印を消したら、すぐ push する文としては正しくても、合わせた結果が動くとは限りません。動かしてテストを回してから出します

深掘りの問い

  • 「コンフリクトを減らすには、どうしますか」ブランチを小さく短く保ち、こまめに main を取り込む、と答えます。同じファイルを触る作業はチームで声をかけ合う、とも添えます
  • 「離れた行を直した場合も、コンフリクトになりますか」別々の行の直しなら、多くの場合 Git が自動で両方を残す、と答えます
  • 「取り込みの途中で、やめたくなったら」 git merge --abort で取り込む前の状態に戻せる、と答えます

確認日 2026年10月23日

技術面接問題の一覧へ戻る