git rebase コマンドは、あるブランチの変更を別のブランチの先頭に付け替えるためのコマンドです。
履歴を整理して直線的にすることで、ログを見やすく保ちたいときに利用されます。
構文(Syntax)
git rebase [オプション] <ブランチ名>
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
<ブランチ名> | 指定ブランチに現在のブランチを付け替え | git rebase main |
-i <ブランチ名> | インタラクティブリベース(コミット編集・統合・削除) | git rebase -i HEAD~3 |
--onto <新ベース> <開始点> <ブランチ> | 特定の範囲を別のベースに付け替え | git rebase --onto main feature~2 feature |
--continue | コンフリクト解消後にリベースを続行 | git rebase --continue |
--abort | リベースを中止して元の状態に戻す | git rebase --abort |
--skip | 問題のあるコミットをスキップ | git rebase --skip |
実行例
基本的なリベース(main の最新に追従)
git checkout feature
git rebase main
インタラクティブリベースでコミット整理
git rebase -i HEAD~3
出力例(エディタが開く):
pick 1a2b3c4 Add login feature
pick 5d6e7f8 Fix typo
pick 9z8y7x6 Update README
(pick を squash に変更すればコミットをまとめられる)
特定の範囲を別ブランチに付け替え
git rebase --onto main feature~2 feature
コンフリクト発生時の解決フロー
git rebase main
# コンフリクト発生
# ファイルを修正後
git add conflict_file.py
git rebase --continue
リベースを中止
git rebase --abort
コミットをスキップ
git rebase --skip
エラー例(未コミットの変更がある場合)
git rebase main
出力例:
fatal: It seems that there is already a rebase-merge directory,
and I wonder if you are in the middle of another rebase.
関連コマンド
git merge: 履歴を保持したまま統合する方法。git log --graph: リベース後の履歴を確認する。git cherry-pick: 特定のコミットだけを適用する。
備考
- 公開済みブランチをリベースすると履歴が書き換わり、他の人と競合が発生する可能性があるため注意。
- ローカルブランチの整理や、プルリクエスト前のコミットをまとめる用途でよく使われる。
git rebase -iはコミットを編集・削除・まとめるのに便利。
参考
- Git公式ドキュメント: https://git-scm.com/docs/git-rebase

コメント