マージ

複数の人が手分けして書いた原稿を持ち寄り、1冊の完成した本にまとめる作業です。

定義 マージ(Merge)とは、プログラム開発において、各自が独立した作業スペース(ブランチ)で書いたコードや変更履歴を、1つのメインの幹(本流)へと統合する作業のことです。複数の人が同時に別々の機能を開発していても、既存のプログラムを壊すことなく安全に成果を合体させることができます。

グループ課題のレポートを1つにまとめる方法

友達とグループ課題でレポートを作成するとき、担当パートを分担して作業した経験があるのではないでしょうか。Aさんは導入、Bさんは本論、Cさんは結論を担当し、各自のパソコンで文章を作成します。すべての執筆が終わったら、最後に1つのファイルに内容をコピーしてまとめて初めて最終レポートが完成します。

ソフトウェアを開発するときも、まったく同じ仕組みを使います。プログラマーたちは大きなプログラムを作るとき、メインのコードから枝分かれさせるように独立した作業スペースを作り、各自で機能を実装します。バージョン管理ツールの「Git(ギット)」では、このように分けた作業の流れを「ブランチ(Branch=枝)」と呼びます。

それぞれのスペースで開発やテストを終えたら、完成したコードを中心となる本流に合流させる必要があります。このように枝分かれしていた作業内容を、基準となる幹へと安全に統合するプロセスを「マージ」と呼びます。

Gitブランチ分岐・マージ図 マージ(統合) メインブランチ ブランチA(序論) ブランチB(本論) 統合完了

Gitはどうやって自動でコードを合体させるの?

文章をまとめる際、人が1文ずつ目で照らし合わせながらコピペしていくと、重要な部分を漏らしたりミスをしたりしがちです。しかしバージョン管理システムは、ファイルのどの行がいつ追加・削除されたかという変更履歴をもとに自動で統合(マージ)してくれます。

例えば、Aさんが10行目の誤字を直し、Bさんが50行目に新しい文章を追加したとしましょう。2人が手を加えた場所はまったく異なるため、ツールは2人の修正箇所をぶつかり合わせることなくスムーズに合体させてくれます。

もう少し専門的に言うと、Gitは2つの作業が枝分かれした「共通の祖先となる時点」を基準にします。枝分かれした後に各自がどの行を変更したかを確認し、重なり(競合)がない部分は魔法のように自動で1つの完成版へと紡ぎ合わせてくれるのです。

同じ場所を同時に修正したらどうなる?

もし2人が同じファイルのまったく同じ行を、それぞれ別の内容に書き換えてしまったらどうなるでしょうか? コンピュータはどちらのコードが正しいかを自分で判断できないため、マージ作業を一時停止して人間に助けを求めます。

この状態をマージの競合(マージコンフリクト / Merge Conflict)と呼びます。コンピュータが勝手にどちらかのコードを上書きして消してしまうと重大なバグにつながるため、「人間が直接確認してください」と立ち止まってくれる安全装置なのです。

このとき開発者は、2人が変更したコードを並べて見比べ、どちらのコードを最終版に残すかを手動で選択します。衝突した部分を正しく整理・修正して初めて、安全にマージが完了します。

🤔 よくある誤解

✕ 誤解

マージをすると、一方のコードがもう一方のコードを単純に上書きしてしまう。

✓ 事実

マージは単なる上書きではなく、それぞれの変更履歴を細かく比較して自動で繋ぎ合わせる作業です。全く同じ行で修正がぶつかった場合のみ、人間にお知らせ(コンフリクト)を出します。

🧺 日常で出会う場面

1 ログイン機能を開発したコードと決済機能を開発したコードを、メインのWebサービスに1つに統合するときにマージを行います。
2 バグを修正した作業用ブランチの内容をレビューした後、本番リリース用のブランチに統合する際にマージを使います。
💡 つまり ひとことで

マージとは、各自が独立して開発したコードの枝(ブランチ)を、1つの幹へと安全に統合する作業のことです。