Git rebase入門
履歴を整理して綺麗に保つ
git rebaseの基本的な使い方、mergeとの違い、注意点を解説します。
こんな人向けの記事です
- コミット履歴を綺麗に保ちたい人
- rebaseとmergeの違いを理解したい人
- rebase時の注意点を知りたい人
Step 1rebaseとは
rebaseは、ブランチの基点(ベース)を別のコミットに移動させる操作です。コミット履歴を直線的に保つことができます。
イメージ: mergeが「合流」だとすると、rebaseは「付け替え」です。featureブランチのコミットをmainの最新の上に載せ替えます。
Step 2基本的な使い方
ターミナル
# featureブランチで作業中
git checkout feature/my-feature
# mainブランチの最新をベースに付け替え
git rebase main
# pullの代わりにrebaseで取り込み
git pull --rebase origin mainStep 3mergeとrebaseの違い
| 項目 | merge | rebase |
|---|---|---|
| 履歴 | 分岐・合流が残る | 直線的になる |
| マージコミット | 作成される | 作成されない |
| 既存コミット | 変更しない | 新しいコミットに作り直す |
| 安全性 | 高い | 共有ブランチでは注意が必要 |
Step 4コンフリクトの解消
ターミナル
# コンフリクトを解消した後
git add 解消したファイル
git rebase --continue
# rebaseを中止して元に戻す
git rebase --abort
# 現在のコミットをスキップ
git rebase --skipStep 5rebaseの注意点
- 共有ブランチではrebaseしない: 他の人が使っているブランチのコミット履歴を書き換えると、チームメンバーに影響が出ます
- プッシュ済みのコミットはrebaseしない: リモートに既にプッシュしたコミットをrebaseすると、force pushが必要になります
- ローカルの作業ブランチでは活用する: mainにマージする前にrebaseして履歴を綺麗にするのは良い習慣です
鉄則: 「共有ブランチのrebaseは避ける」「ローカルブランチのrebaseは活用する」が基本ルールです。