マージ
初級読み方:マージ|英語:Merge
ブランチの変更をメインブランチに統合することだよ。
やさしい説明
マージとは、ブランチの変更をメインブランチに統合する操作です。開発が完了したブランチを main に取り込みます。
ノートのコピーに書いた内容を、元のノートに反映するイメージです。Gitが自動で変更を統合してくれます。
同じ箇所を別々に変更していた場合は「コンフリクト(衝突)」が発生し、手動で解決する必要があります。
具体例・使い方
# mainに切り替えてからマージ
git checkout main
git merge feature/login
# マージ後、不要なブランチを削除
git branch -d feature/login マージの流れ(チーム開発の典型例)
- mainブランチから作業用ブランチを作成する(
git checkout -b feature/login) - ブランチ上でコードを変更・コミットする
- GitHubにプッシュしてPull Requestを作成する
- チームメンバーがコードレビューを行う
- レビューが承認されたらmainにマージする
- 不要になったブランチを削除する
コンフリクト(衝突)の解決方法
コンフリクトが発生すると、Gitはファイルに以下のような衝突マーカーを挿入します。
<<<<<<< HEAD(現在のブランチ)
console.log("こんにちは");
=======
console.log("Hello");
>>>>>>> feature/english(マージしようとしたブランチ) 解決手順:
- 衝突しているファイルを開く
<<<<<<</=======/>>>>>>>の行を含めて、残したい方を手動で選ぶ- ファイルを保存して
git addでステージする git commitでマージを完了させる
VS Codeではコンフリクト箇所に「現在の変更を採用」「受信した変更を採用」「両方を採用」ボタンが表示されるので、クリックするだけで解決できます。
いつ使う?
機能の開発が完了してテストも通ったとき、Pull Requestが承認されたとき、バグ修正が完了したときにマージします。個人開発では直接 git merge を使い、チーム開発ではGitHubのPull Request経由でマージするのが一般的です。
間違いやすいポイント
❌ コンフリクトが怖くてマージできない
コンフリクトは「同じ箇所を別々に変更した」だけです。エディタが衝突箇所を表示してくれるので、どちらの変更を残すか選ぶだけです。git pull をこまめに実行して差分を小さく保つと、大きなコンフリクトを防げます。
よくある疑問
Q: コンフリクトが起きたら?
A: 同じファイルの同じ行を変更した場合に起きます。ファイルを開いて<<<<<<< と >>>>>>>の間を手動で修正してからコミットします。
Q: マージとリベースの違いは?
A: マージは履歴を残して統合、リベースは履歴を一直線にきれいにします。初心者はマージが安全です。
Q: マージを取り消すには?
A: マージ直後なら git merge --abort で中止できます。コミット後なら git revert で打ち消しコミットを作ります。
関連用語
📖 関連レッスン
レッスンを見る →