feature ブランチで開発した変更を main ブランチに取り込む方法を学びます。
ブランチで完成した変更を別のブランチに統合する操作です。
feature ●──●──● ←ここの変更を
↓ merge
main ●──────● mainに取り込む
# 1. 取り込む先のブランチに移動
git checkout main
# 2. マージ実行
git merge feature
# 3. 不要になったブランチを削除
git branch -d feature
main で変更がなければ、ブランチのコミットをそのまま取り込む「Fast-forward」が行われます。新しいマージコミットは作られません。
マージが完了したら git branch -d feature でブランチを削除してリポジトリを整理しましょう。
マージは「取り込む側のブランチ」に移動してから実行します。
main に機能ブランチを取り込むなら、まず git switch main です。
取り込む向きを逆にしてしまうのは、いちばん多い間違いです。
$ git switch main
$ git merge feature
main が枝分かれ後に一度も進んでいない場合、Git は履歴を分岐させず
main の位置を前に進めるだけで済ませます。これが 早送り です。
両方が進んでいる場合は、2 つの履歴を束ねる マージコミット が 1 つ作られます。
同じ行を両方のブランチで変更していると、Git は自動で決められず作業を止めます。
慌てる必要はありません。手順は決まっています。
1. git status で衝突したファイルを確認する
2. ファイルを開き、<<<<<<< と >>>>>>> に挟まれた部分を正しい形に直す
3. 目印の行を消して保存し、git add <ファイル> で解決済みにする
4. git commit でマージを完了する
やり直したくなったら git merge --abort でマージ前の状態に戻せます。
- 取り込む向きが逆 — 取り込みたい側へ switch してから merge します。
- 衝突の目印を消し忘れる — <<<<<<< が残ったままコミットすると、そのままコードに混入します。
- マージ後にブランチが残る — 用が済んだら git branch -d で片づけると一覧が読みやすくなります。
次のレッスン: 実践ワークフロー — 開発の全手順