ソフトウェア開発とプロジェクト管理
Gitで、2人の開発者が同じファイルの同じ行をそれぞれ別のブランチで書き換え、一方のブランチをもう一方にマージした。このとき起こることとして、適切なものはどれか。
- Aコミットの日時が新しい方の変更が自動で採用され、古い方の変更は捨てられる
- B取り込む側のブランチの変更が常に優先され、相手の変更は自動で捨てられる
- Cコンフリクト(競合)としてマージが止まり、開発者が内容を確かめて、どちらを残すか(または両方を組み合わせるか)を決めて解消する
答えと解説を見る
正解:C. コンフリクト(競合)としてマージが止まり、開発者が内容を確かめて、どちらを残すか(または両方を組み合わせるか)を決めて解消する
Gitのマージは、共通の祖先からの変更を両方のブランチについて比べ、違う場所の変更なら自動で組み合わせます。同じ箇所が両方で変更されていると、どちらが正しいかを機械的には決められないので、コンフリクトとしてマージを止め、ファイルの中に両方の内容を示します。開発者はそれを編集して解消し、テストしてからコミットします。コンフリクトを減らすには、ブランチを長く分けたままにせず、こまめに統合することが有効です。
- A. Gitは日時で変更を選びません。同じ箇所の変更は、人が判断して解消します。
- B. 標準のマージでは、どちらかの変更を自動で捨てることはせず、コンフリクトとして止めます。
- C. 正しい。同じ箇所の変更はコンフリクトになり、人が判断して解消します。