やさしいGitとGitHub
第4章 チームで共同作業する
15 / 18
LESSON 4-5

変更がぶつかったら
(コンフリクト)

同じ場所を2人が別々に直すと、Gitは「どちらが正しいか決められない」と手を止めます。これが「コンフリクト」です。直し方の流れを学びましょう。

所要時間約8分必要なものなし(図を見るだけ)難しさふつう

このレッスンでわかること

まず言葉の意味からコンフリクトは
「同じ欄を2人が別の数字で直した」状態

コンフリクト(conflict)は、英語で「衝突」という意味です。同じファイルの同じ場所を、2人が別々に直したとき、Gitが「どちらが正しいか決められない」と手を止める状態です。

経理でいえば、同じ欄を2人が別々の数字で訂正してしまい、どちらを採用するか判断が要る状態です。珍しいことではありません。落ち着いて、どちらの内容にするかを決めれば解決できます。

手順3つのステップで直し方を学びます

01

ぶつかった知らせを見つける

プルリクエストの画面に、警告が出ます。マージはまだできません。

  1. 1
    This branch has conflicts that must be resolved:「このブランチには、解決が必要な衝突があります」という意味です。
  2. 2
    Resolve conflicts:「衝突を解決する」。ここから直します。
安心してください警告が出ても、データが壊れたわけではありません。どちらの記録も、安全に残っています。
02

2つの内容を見比べる

衝突を直す画面では、同じ場所に2つの内容が並びます。目印の記号(<<<<<<<、=======、>>>>>>>)で区切られています。

  1. 1
    上の内容:自分のブランチ(fix-deadline)の内容です。
  2. 2
    下の内容:本流(main)側の内容です。
ここだけ注意どちらを残すかは、相手や関係者に確認して決めます。自分の判断だけで、相手の内容を消さないようにしてください。上の例なら、「正しい期限はどちらか」を、規程や担当者に確かめます。
03

1つにそろえて、解決済みにする

残す内容を決めたら、目印の記号をすべて消して、1つの内容にそろえます。そのあと、解決済みにして、記録します。

  1. 1
    Mark as resolved:「解決済みにする」。目印の記号が残っていないか確認してから押します。
  2. 2
    Commit merge:「マージを記録する」。これで、衝突が解決し、マージできる状態になります。
迷ったらどうしても判断がつかないときは、無理に進めません。画面を閉じても、記録は消えません。詳しい人に相談してから、あらためて直してください。

第4章の練習コーナー

ブランチ作成 → プルリクエスト → マージを行い、コンフリクトをどちらの内容で直すか選びます。点数は付きません。何度でもやり直せます(約3〜5分)。

練習コーナーへ進む

まとめ

  1. コンフリクトは、同じ場所を2人が別々に直したときに起きる衝突
  2. 直し方は、2つの内容を見比べて、残す内容を1つに決めること
  3. 決めるときは、相手や関係者に確認する

※ 画面図は実際の画面を簡略化したものです。実際の画面とは細部が異なる場合があります。この章は、練習相手がいなくても学べるよう、図と流れを中心にしています。