Gitインタラクティブリベース:コミットのSquash、Reword、並べ替え
git rebase -iをマスターして、コミットのsquash、reword、edit、reorder、dropを行います。マージ前にインタラクティブリベースで乱雑なコミット履歴を整理します。
Rebasing
詳細な説明
git rebase -iによるインタラクティブリベース
インタラクティブリベースはコミット履歴を整理するためのGitの最も強力な機能の一つです。プッシュまたはマージする前にコミットのsquash、reword、reorder、edit、dropが可能です。
インタラクティブリベースの開始
# 最後の4つのコミットをリベース
git rebase -i HEAD~4
# mainにリベース
git rebase -i main
エディタにコミットリストが表示されます:
pick abc1234 feat: add login form
pick def5678 fix: typo in login
pick ghi9012 feat: add validation
pick jkl3456 fix: validation edge case
リベースコマンド
pickを以下のいずれかに置き換えます:
| コマンド | 短縮 | 効果 |
|---|---|---|
pick |
p |
コミットをそのまま保持 |
reword |
r |
コミットを保持しメッセージを編集 |
edit |
e |
コミットを修正するため一時停止 |
squash |
s |
前のコミットに統合 |
fixup |
f |
squashと同様だがメッセージを破棄 |
drop |
d |
コミットを完全に削除 |
コンフリクトの処理
リベース中にコンフリクトが発生した場合:
# エディタでコンフリクトを解決し、次に:
git add <解決済みファイル>
git rebase --continue
# またはリベース全体を中止:
git rebase --abort
ユースケース
インタラクティブリベースはクリーンなプロジェクト履歴を維持するために不可欠です。フィーチャーブランチをマージする前に、開発者はこれを使用してWIPコミットをsquash、メッセージのタイプミスを修正、変更を論理的な単位に整理します。多くのチームがmainにマージする前にsquashコミットを要求するため、インタラクティブリベースは日常的なツールです。