「このブランチをマージして」
「マージしたらコンフリクトが出た」
開発現場でよく使われる「マージ(Merge)」は、日本語にすると「合流・統合」です。
今回は、マージを「道路の合流」に例えて解説します。
結論:「マージ」=「別の流れで進めた変更を、1つに統合すること」
Gitでは、本流からブランチを分けて作業できます。新しい機能や修正が完成したら、その変更を本流へ取り込みます。この作業がマージです。
「道路」で例えると?
- mainブランチ: 安定した本線。
- featureブランチ: 新しい変更を進める別の車線。
- マージ: 別の車線から本線へ合流する作業。
本線で直接大きな工事をする代わりに、別の場所で変更を作り、確認してから合流させます。
なぜブランチを分けるの?
ブランチを分けると、作業途中の変更が、すぐに本流へ混ざるのを防げます。
例えば、新しい検索機能がまだ完成していなくても、mainブランチは安定した状態を保てます。複数人が別々の課題へ取り組む時にも便利です。
ただし、ブランチを使えば必ず安全になるわけではありません。テストやレビューを行い、取り込んでよい状態かを確認する必要があります。
「コンフリクト」とは?
Gitが変更を自動で統合できない時に起こるのが、コンフリクト(競合)です。
- Aさんが、同じ行の色を赤へ変更した。
- Bさんが、その行の色を青へ変更した。
- Gitは、どちらを残すべきか判断できない。
この場合、Gitは競合した場所を示し、人に判断を求めます。
コンフリクトは、ファイルが壊れたという意味ではありません。「自動では決められないので、内容を確認してください」という合図です。
コンフリクトを解決する時の考え方
- それぞれの変更目的を確認する。
- 片方を選ぶのか、両方を生かすのかを決める。
- 修正後にテストする。
- 解決した内容をコミットする。
「自分の変更を全部残す」「相手の変更を全部捨てる」と機械的に決めると、必要な修正まで消す可能性があります。分からない時は、変更した人に確認するのが一番確実です。
マージにも種類がある
Gitの履歴やチームのルールによって、通常のマージ、スカッシュマージ、リベースマージなどを使い分けることがあります。
初心者の段階では、まず「別のブランチの変更を本流へ取り込む」という基本を理解できれば十分です。
マージ前に確認したいこと
- 取り込む変更の目的を説明できるか
- 自動テストや必要な手動確認が終わっているか
- 意図しないファイルや一時的なデバッグ出力が混ざっていないか
- mainブランチの最新状態と組み合わせても動くか
マージ操作そのものが成功しても、アプリが正しく動くとは限りません。履歴の統合と、動作の確認は分けて考えます。
まとめ
- マージ = 「別々の変更を1つに統合すること」
- ブランチ = 「本流から分けた作業の流れ」
- コンフリクト = 「Gitが自動で統合できず、人の判断が必要な状態」
- 確認 = 「マージできるかだけでなく、マージ後に動くかも確かめる」
マージは、単にファイルを合体させる操作ではありません。それぞれの変更意図を確認し、1つの成果へまとめる作業です。
次の記事では、マージする前に変更を共有・確認する「プルリクエスト」について解説します。
ここまでお読みいただきありがとうございました!
QUICK CHECK
よくある質問
コンフリクトが出たら失敗ですか?
失敗とは限りません。同じ場所へ別の変更が加わり、Gitだけでは正解を決められないという合図です。双方の目的を確認し、残す内容を人が決めます。
次に読むなら?
PULL REQUESTの記事へ進むと、開発や通信の流れを順番に理解できます。
参考資料
用語の定義や仕様を確認するため、公式文書・標準文書を参照しています。リンク先の内容は更新される場合があります。