CHAPTER 02MERGE

第2章|開発の流れ

【IT用語】「マージ」とは?別々の変更を1つに合流する作業

マージとは何かを、ブランチの合流、コンフリクトが起きる理由、人が判断するポイント、統合後に必要なテストまでやさしく解説します。

「このブランチをマージして」

「マージしたらコンフリクトが出た」

開発現場でよく使われる「マージ(Merge)」は、日本語にすると「合流・統合」です。

今回は、マージを「道路の合流」に例えて解説します。

結論:「マージ」=「別の流れで進めた変更を、1つに統合すること」

Gitでは、本流からブランチを分けて作業できます。新しい機能や修正が完成したら、その変更を本流へ取り込みます。この作業がマージです。

「道路」で例えると?

  • mainブランチ: 安定した本線。
  • featureブランチ: 新しい変更を進める別の車線。
  • マージ: 別の車線から本線へ合流する作業。

本線で直接大きな工事をする代わりに、別の場所で変更を作り、確認してから合流させます。

なぜブランチを分けるの?

ブランチを分けると、作業途中の変更が、すぐに本流へ混ざるのを防げます。

例えば、新しい検索機能がまだ完成していなくても、mainブランチは安定した状態を保てます。複数人が別々の課題へ取り組む時にも便利です。

ただし、ブランチを使えば必ず安全になるわけではありません。テストやレビューを行い、取り込んでよい状態かを確認する必要があります。

「コンフリクト」とは?

Gitが変更を自動で統合できない時に起こるのが、コンフリクト(競合)です。

  • Aさんが、同じ行の色を赤へ変更した。
  • Bさんが、その行の色を青へ変更した。
  • Gitは、どちらを残すべきか判断できない。

この場合、Gitは競合した場所を示し、人に判断を求めます。

コンフリクトは、ファイルが壊れたという意味ではありません。「自動では決められないので、内容を確認してください」という合図です。

コンフリクトを解決する時の考え方

  1. それぞれの変更目的を確認する。
  2. 片方を選ぶのか、両方を生かすのかを決める。
  3. 修正後にテストする。
  4. 解決した内容をコミットする。

「自分の変更を全部残す」「相手の変更を全部捨てる」と機械的に決めると、必要な修正まで消す可能性があります。分からない時は、変更した人に確認するのが一番確実です。

マージにも種類がある

Gitの履歴やチームのルールによって、通常のマージ、スカッシュマージ、リベースマージなどを使い分けることがあります。

初心者の段階では、まず「別のブランチの変更を本流へ取り込む」という基本を理解できれば十分です。

マージ前に確認したいこと

  • 取り込む変更の目的を説明できるか
  • 自動テストや必要な手動確認が終わっているか
  • 意図しないファイルや一時的なデバッグ出力が混ざっていないか
  • mainブランチの最新状態と組み合わせても動くか

マージ操作そのものが成功しても、アプリが正しく動くとは限りません。履歴の統合と、動作の確認は分けて考えます。

まとめ

  • マージ「別々の変更を1つに統合すること」
  • ブランチ「本流から分けた作業の流れ」
  • コンフリクト「Gitが自動で統合できず、人の判断が必要な状態」
  • 確認「マージできるかだけでなく、マージ後に動くかも確かめる」

マージは、単にファイルを合体させる操作ではありません。それぞれの変更意図を確認し、1つの成果へまとめる作業です。

次の記事では、マージする前に変更を共有・確認する「プルリクエスト」について解説します。

ここまでお読みいただきありがとうございました!

QUICK CHECK

よくある質問

コンフリクトが出たら失敗ですか?

失敗とは限りません。同じ場所へ別の変更が加わり、Gitだけでは正解を決められないという合図です。双方の目的を確認し、残す内容を人が決めます。

次に読むなら?

PULL REQUESTの記事へ進むと、開発や通信の流れを順番に理解できます。

参考資料

用語の定義や仕様を確認するため、公式文書・標準文書を参照しています。リンク先の内容は更新される場合があります。