LESSON 4-5
変更がぶつかったら
(コンフリクト)
同じ場所を2人が別々に直すと、Gitは「どちらが正しいか決められない」と手を止めます。これが「コンフリクト」です。直し方の流れを学びましょう。
このレッスンでわかること
- コンフリクトが何を意味するか
- ぶつかったときの画面の見かた
- 残す内容を決めて、解決する流れ
まず言葉の意味からコンフリクトは
「同じ欄を2人が別の数字で直した」状態
コンフリクト(conflict)は、英語で「衝突」という意味です。同じファイルの同じ場所を、2人が別々に直したとき、Gitが「どちらが正しいか決められない」と手を止める状態です。
経理でいえば、同じ欄を2人が別々の数字で訂正してしまい、どちらを採用するか判断が要る状態です。珍しいことではありません。落ち着いて、どちらの内容にするかを決めれば解決できます。
手順3つのステップで直し方を学びます
01
ぶつかった知らせを見つける
プルリクエストの画面に、警告が出ます。マージはまだできません。
github.com/あなたの名前/keiri-manual/pull/2
1This branch has conflicts that must be resolved2Resolve conflicts
- 1This branch has conflicts that must be resolved:「このブランチには、解決が必要な衝突があります」という意味です。
- 2Resolve conflicts:「衝突を解決する」。ここから直します。
安心してください警告が出ても、データが壊れたわけではありません。どちらの記録も、安全に残っています。
02
2つの内容を見比べる
衝突を直す画面では、同じ場所に2つの内容が並びます。目印の記号(<<<<<<<、=======、>>>>>>>)で区切られています。
github.com/あなたの名前/keiri-manual/pull/2/conflicts
<<<<<<< fix-deadline
1経費精算は、月末までに申請します。
=======
2経費精算は、翌月5日までに申請します。
>>>>>>> main
- 1上の内容:自分のブランチ(fix-deadline)の内容です。
- 2下の内容:本流(main)側の内容です。
ここだけ注意どちらを残すかは、相手や関係者に確認して決めます。自分の判断だけで、相手の内容を消さないようにしてください。上の例なら、「正しい期限はどちらか」を、規程や担当者に確かめます。
03
1つにそろえて、解決済みにする
残す内容を決めたら、目印の記号をすべて消して、1つの内容にそろえます。そのあと、解決済みにして、記録します。
github.com/あなたの名前/keiri-manual/pull/2/conflicts
経費精算は、月末までに申請します。
1Mark as resolved2Commit merge
- 1Mark as resolved:「解決済みにする」。目印の記号が残っていないか確認してから押します。
- 2Commit merge:「マージを記録する」。これで、衝突が解決し、マージできる状態になります。
迷ったらどうしても判断がつかないときは、無理に進めません。画面を閉じても、記録は消えません。詳しい人に相談してから、あらためて直してください。
まとめ
- コンフリクトは、同じ場所を2人が別々に直したときに起きる衝突
- 直し方は、2つの内容を見比べて、残す内容を1つに決めること
- 決めるときは、相手や関係者に確認する
※ 画面図は実際の画面を簡略化したものです。実際の画面とは細部が異なる場合があります。この章は、練習相手がいなくても学べるよう、図と流れを中心にしています。