概要
 作業時に毎回検索 => 情報整理してたので、自分用に簡素に記事化
AIにほぼ作ってもらった記事なので、間違いがあるかもしれません。
ユースケース
rebase -i を使用します。
- 複数のコミットを1つにまとめる
 - コミットメッセージを修正する
 - コミットの順序を変更する
 - 不要なコミットを削除する
 
基本的な手順
1. コマンド実行
git rebase -i HEAD~4
- 
HEAD~4:現在から4つ前のコミットまでを対象にする - 
HEAD~~~~も同じ意味 
2. エディタが開く
コミット一覧が表示されます:
pick 8145f1c Fix screen rotation problem  ← 最新から4番目
pick d90db4a v1.2.4                      ← 最新から3番目  
pick 646bf79 Fix screen rotation problem  ← 最新から2番目
pick 71a6940 v1.2.4                      ← 最新(HEAD)
重要: 表示順序は古い順(上が古く、下が新しい)
3. 編集方法
各行の先頭にあるpickを変更することで動作を指定:
| コマンド | 説明 | 
|---|---|
pick (p) | 
そのコミットをそのまま使用 | 
squash (s) | 
前のコミットに統合(メッセージも統合) | 
fixup (f) | 
前のコミットに統合(メッセージは破棄) | 
reword (r) | 
コミットメッセージのみ変更 | 
edit (e) | 
コミット内容を編集 | 
ユースケース別の使い方
複数のコミットを1つにまとめる
pick 8145f1c Fix screen rotation problem  ← これは残す
s 646bf79 Fix screen rotation problem     ← これを上に統合
pick d90db4a v1.2.4                      ← これは残す  
s 71a6940 v1.2.4                         ← これを上に統合
統合後にメッセージ編集画面が開くので、重複を削除:
Fix screen rotation problem
コミットメッセージを修正する
pick 8145f1c Fix screen rotation problem
r d90db4a v1.2.4                         ← メッセージを修正
pick 646bf79 Fix screen rotation problem
pick 71a6940 v1.2.4
rewordでメッセージ編集画面が開きます。
コミットの順序を変更する
エディタ内で行の順序を変更するだけ:
pick d90db4a v1.2.4                      ← 2番目を1番目に移動
pick 8145f1c Fix screen rotation problem  ← 1番目を2番目に移動
pick 646bf79 Fix screen rotation problem
pick 71a6940 v1.2.4
Vim ショートカット
dd - 現在行を切り取り(削除してクリップボードに保存)
p - カーソル位置の下に貼り付け
P - カーソル位置の上に貼り付け
不要なコミットを削除する
該当する行を削除、またはコメントアウト:
pick 8145f1c Fix screen rotation problem
# pick d90db4a v1.2.4                    ← この行を削除またはコメントアウト
pick 646bf79 Fix screen rotation problem
pick 71a6940 v1.2.4
注意点
- 公開済みコミットは避ける: 他の人がpullしたコミットを編集すると問題が起きる可能性があります
 - バックアップ: 重要な変更前は別ブランチを作成しておくと安全です
 - 順序: エディタでの表示順序(古い→新しい)を理解しておく