🕌
Git Rebase でコミットログを整理する方法
はじめに
細かいコミットが増えて履歴が見づらくなることはありませんか。
そのようなときに便利なのが git rebase -i
(インタラクティブリベース)です。
この記事では、Git のコミットログを整理するための Rebase の使い方を紹介します。
git rebase -i
とは?
git rebase -i HEAD~N
を使うと、直近 N 個のコミットを編集・統合・削除できます。
できること
- 不要なコミットを削除(drop)
- 複数のコミットを統合(squash)
- コミットメッセージを変更(reword)
- コミットの内容を修正(edit)
git rebase -i
の基本的な使い方
1. 直近 3 つのコミットを編集する
git rebase -i HEAD~3
2. エディタでコミットを編集
リベースを開始すると、次のようなリストが表示されます。
pick E コミットメッセージ(1つ前)
pick D コミットメッセージ(2つ前)
pick C コミットメッセージ(3つ前)
コマンド | 説明 |
---|---|
pick |
そのままの状態を維持 |
reword |
コミットメッセージを変更 |
edit |
コミット内容を変更 |
squash |
直前のコミットと統合 |
drop |
コミットを削除 |
よくあるコミット整理パターン
1. コミットメッセージを修正(reword)
間違ったコミットメッセージを修正したい場合、pick
を reword
に変更します。
pick E 追加変更
reword D 修正ミスのコミット
pick C 初回のコミット
リベース中にエディタが開くので、D のコミットメッセージを変更します。
2. 2つ前に3つ前のコミットを統合(squash)
pick E 他の変更
squash D 追加修正
pick C 機能追加
- D と C のコミットが統合され、1 つのコミットになる
- squash した後、コミットメッセージを編集
3. 1つ前コミットに2,3つ前のコミットを統合
squash E 小さな修正
squash D 他の修正
pick C 大きな機能追加
-
E
D
C
のコミットが統合され、1 つのコミットになる - squash した後、コミットメッセージを編集
4. 途中のコミットを削除(drop)
pick E 重要な変更
drop D 不要なログ
drop C デバッグ用コミット
-
D
とC
が削除される -
E
だけが履歴に残る
リベースの適用とリモートへの反映
リベースを実行後、git log --oneline
で履歴を確認できるので、正しく整理できたか確認します。
git log --oneline
もし間違えた場合は、書きコマンドで元に戻せます。
git rebase --abort
リベース後にリモートリポジトリへ反映する場合、-f
(force push)が必要です。
git push origin -f
強制プッシュのため、チーム開発では注意して使用すること。
まとめ
-
git rebase -i HEAD~N
でコミットを整理できる -
squash
で細かいコミットを統合 -
reword
でメッセージを修正 -
drop
で不要なコミットを削除 -
edit
でコミット内容を変更 - リモートリポジトリに反映するには
git push origin -f
が必要
コミット履歴を綺麗に保ち、チームでの開発を円滑に進めましょう。
Discussion