Git

マージ

初級

読み方:マージ|英語:Merge

ブランチの変更をメインブランチに統合することだよ。

やさしい説明

マージとは、ブランチの変更をメインブランチに統合する操作です。開発が完了したブランチを main に取り込みます。

ノートのコピーに書いた内容を、元のノートに反映するイメージです。Gitが自動で変更を統合してくれます。

同じ箇所を別々に変更していた場合は「コンフリクト(衝突)」が発生し、手動で解決する必要があります。

具体例・使い方

# mainに切り替えてからマージ
git checkout main
git merge feature/login

# マージ後、不要なブランチを削除
git branch -d feature/login

マージの流れ(チーム開発の典型例)

  1. mainブランチから作業用ブランチを作成する(git checkout -b feature/login
  2. ブランチ上でコードを変更・コミットする
  3. GitHubにプッシュしてPull Requestを作成する
  4. チームメンバーがコードレビューを行う
  5. レビューが承認されたらmainにマージする
  6. 不要になったブランチを削除する

コンフリクト(衝突)の解決方法

コンフリクトが発生すると、Gitはファイルに以下のような衝突マーカーを挿入します。

<<<<<<< HEAD(現在のブランチ)
console.log("こんにちは");
=======
console.log("Hello");
>>>>>>> feature/english(マージしようとしたブランチ)

解決手順:

  1. 衝突しているファイルを開く
  2. <<<<<<< / ======= / >>>>>>> の行を含めて、残したい方を手動で選ぶ
  3. ファイルを保存して git add でステージする
  4. git commit でマージを完了させる

VS Codeではコンフリクト箇所に「現在の変更を採用」「受信した変更を採用」「両方を採用」ボタンが表示されるので、クリックするだけで解決できます。

いつ使う?

機能の開発が完了してテストも通ったとき、Pull Requestが承認されたとき、バグ修正が完了したときにマージします。個人開発では直接 git merge を使い、チーム開発ではGitHubのPull Request経由でマージするのが一般的です。

間違いやすいポイント

❌ コンフリクトが怖くてマージできない

コンフリクトは「同じ箇所を別々に変更した」だけです。エディタが衝突箇所を表示してくれるので、どちらの変更を残すか選ぶだけです。git pull をこまめに実行して差分を小さく保つと、大きなコンフリクトを防げます。

よくある疑問

Q: コンフリクトが起きたら?

A: 同じファイルの同じ行を変更した場合に起きます。ファイルを開いて<<<<<<< と >>>>>>>の間を手動で修正してからコミットします。

Q: マージとリベースの違いは?

A: マージは履歴を残して統合、リベースは履歴を一直線にきれいにします。初心者はマージが安全です。

Q: マージを取り消すには?

A: マージ直後なら git merge --abort で中止できます。コミット後なら git revert で打ち消しコミットを作ります。

関連用語

📖 関連レッスン

レッスンを見る →

関連ブログ記事

❓ 関連するQ&A