🕌

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)

間違ったコミットメッセージを修正したい場合、pickreword に変更します。

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 デバッグ用コミット
  • DC が削除される
  • 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 が必要

コミット履歴を綺麗に保ち、チームでの開発を円滑に進めましょう。

GitHubで編集を提案

Discussion