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コミットを要求するため、インタラクティブリベースは日常的なツールです。

試してみる — Git Command Reference & Cheat Sheet

フルツールを開く