基本的な使用方法
git rebase -i <対象コミット>履歴の確認と編集開始
# 最新の3つのコミットを編集
git rebase -i HEAD~3
# 特定のコミットを起点に編集
git rebase -i abc1234エディタ画面の構成
エディタが開くと以下のような表示になります
pick f7f3f6d 機能Aの実装
pick 310154e バグ修正
pick a5f4a0d タイポ修正
# Commands:
# p, pick = コミットをそのまま使用
# r, reword = コミットは使用、メッセージを編集
# e, edit = コミットで停止、内容を修正
# s, squash = 前のコミットと結合、メッセージも結合
# f, fixup = 前のコミットと結合、メッセージは破棄
# d, drop = コミットを削除主要なアクション
複数コミットの結合(squash)
pick f7f3f6d 機能Aの実装
squash 310154e バグ修正
squash a5f4a0d タイポ修正コミットメッセージの変更(reword)
reword f7f3f6d 機能Aの実装
pick 310154e バグ修正
pick a5f4a0d タイポ修正コミット内容の修正(edit)
edit f7f3f6d 機能Aの実装
pick 310154e バグ修正
pick a5f4a0d タイポ修正開発での使用
# フィーチャーブランチで作業
git checkout -b feature/user-auth
# 段階的なコミット作成
git add src/login.js
git commit -m "ログイン機能のベース実装"
git add src/validation.js  
git commit -m "入力バリデーション追加"
git add src/login.js
git commit -m "認証ロジック完成"
git add tests/auth.test.js
git commit -m "ユニットテスト追加"
git add src/login.js
git commit -m "バグ修正"
# コミット履歴を整理
git rebase -i HEAD~5エディタでの編集例
pick abc1234 ログイン機能のベース実装
squash def5678 入力バリデーション追加
squash ghi9012 認証ロジック完成
fixup jkl3456 バグ修正
pick mno7890 ユニットテスト追加この編集により、機能実装に関する4つのコミットが1つにまとまり、テストコミットは独立して残ります。
注意事項とトラブル対応
                    ISSUE - 課題
                  
                  共有ブランチでのリベースは禁止です。他の開発者がすでに使用しているブランチで履歴を変更すると、プロジェクト全体に影響を与えます。
安全な使用範囲
# ❌ 危険:共有ブランチ
git checkout main
git rebase -i HEAD~3
# ✅ 安全:個人のフィーチャーブランチ
git checkout feature/my-work
git rebase -i HEAD~3コンフリクトの解消
# コンフリクト発生時
git status
# コンフリクトファイルを手動で解決
git add <解決済みファイル>
git rebase --continue
# リベースを中止する場合
git rebase --abortワークフローへの組み込み
プルリク前の準備
# 作業完了後、履歴を整理
git rebase -i HEAD~10
# リモートブランチと同期
git fetch origin
git rebase origin/main
# プルリク作成
git push origin feature/user-auth