マージ — ブランチを統合する

中級124

feature ブランチで開発した変更を main ブランチに取り込む方法を学びます。

マージとは?

ブランチで完成した変更を別のブランチに統合する操作です。

feature  ●──●──● ←ここの変更を
               ↓ merge
main     ●──────●  mainに取り込む

マージの手順

# 1. 取り込む先のブランチに移動
git checkout main

# 2. マージ実行
git merge feature

# 3. 不要になったブランチを削除
git branch -d feature

Fast-forward マージ

main で変更がなければ、ブランチのコミットをそのまま取り込む「Fast-forward」が行われます。新しいマージコミットは作られません。

マージ後のブランチ削除

マージが完了したら git branch -d feature でブランチを削除してリポジトリを整理しましょう。

マージの前に確認すること

マージは「取り込む側のブランチ」に移動してから実行します。

main に機能ブランチを取り込むなら、まず git switch main です。

取り込む向きを逆にしてしまうのは、いちばん多い間違いです。

$ git switch main
$ git merge feature

早送り (fast-forward) とマージコミット

main が枝分かれ後に一度も進んでいない場合、Git は履歴を分岐させず

main の位置を前に進めるだけで済ませます。これが 早送り です。

両方が進んでいる場合は、2 つの履歴を束ねる マージコミット が 1 つ作られます。

衝突 (コンフリクト) が起きたら

同じ行を両方のブランチで変更していると、Git は自動で決められず作業を止めます。

慌てる必要はありません。手順は決まっています。

1. git status で衝突したファイルを確認する

2. ファイルを開き、<<<<<<<>>>>>>> に挟まれた部分を正しい形に直す

3. 目印の行を消して保存し、git add <ファイル> で解決済みにする

4. git commit でマージを完了する

やり直したくなったら git merge --abort でマージ前の状態に戻せます。

よくあるつまずき

- 取り込む向きが逆 — 取り込みたい側へ switch してから merge します。

- 衝突の目印を消し忘れる<<<<<<< が残ったままコミットすると、そのままコードに混入します。

- マージ後にブランチが残る — 用が済んだら git branch -d で片づけると一覧が読みやすくなります。

次のレッスン: 実践ワークフロー — 開発の全手順

git-dojo
Git道場へようこそ。コマンドを入力して練習を開始してください。
(main) $
練習問題 — 0/4 完了 (0/60pt)
feature ブランチに切り替えて、新ファイル app.js を作成しコミットしてください。
20pt
main ブランチに戻ってください。
10pt
feature ブランチを main にマージしてください。
20pt
マージが完了したので feature ブランチを削除してください。
10pt