高度なGit履歴編集:コミットの修正とインタラクティブ・リベース

`git commit --amend`や`git rebase -i`といった強力なGitコマンドを駆使して、コミットメッセージの修正、コミットの統合(スカッシュ)、プロジェクト履歴の整理を行う方法を解説します。

Gitの履歴をきれいに保つことは、プロジェクトの可読性を高め、チーム開発を円滑にするために非常に重要です。本記事では、履歴を修正するための強力なツールであるgit commit --amendgit rebase -iの使い方を解説します。

1. 直前のコミットを修正する: git commit --amend

直前のコミットメッセージを書き換えたい場合や、コミットし忘れたファイルを追加したい場合に便利です。

# ステージングした変更を直前のコミットに追加する
git add .
git commit --amend --no-edit

--no-editフラグを使うと、コミットメッセージを変更せずに内容だけを更新できます。

2. 履歴を整理する: git rebase -i

インタラクティブ・リベースを使用すると、過去の複数のコミットをまとめたり、メッセージを書き換えたり、不要なコミットを削除したりできます。

# 直近3つのコミットを編集対象にする
git rebase -i HEAD~3

コマンドを実行するとエディタが開き、各コミットに対して以下のような操作を選択できます:

  • pick: そのまま使用する
  • squash (s): 前のコミットと統合する
  • reword (r): コミットメッセージのみを書き換える
  • drop (d): コミットを削除する

注意点

これらの操作は公開済みのブランチ(リモートにプッシュ済みの履歴)に対しては絶対に行わないでください。履歴の改変は他の開発者の作業に混乱を招く可能性があります。必ずローカル環境での作業に限定しましょう。