DESIGN / CODE / INFRA / AI

解説

直前のコミットを直す前に:git commit --amendとステージ内容の確認

コミットした直後に、入れ忘れた一行に気付いた。git commit --amendは直前のコミットを作り直す手段だけれど、何が入るかを確認してから使おう。

直前のコミットを直す前に:git commit --amendとステージ内容の確認
保存リストを見る →
この記事の道しるべ 5項目

コミットした直後に、入れ忘れた一行に気付いた。git commit --amendは直前のコミットを作り直す手段だけれど、何が入るかを確認してから使おう。

ここでは共有前のローカルコミットを、一時リポジトリで試す。公開済みブランチや他の人と使う履歴は対象にしない。作業中のチェックアウトで、そのまま例を実行しないでね。

メモの修正ではなく、新しいコミット

--amendは、通常の新規コミットを後ろへ足す代わりに、直前のコミットを置き換える形で新しいコミットを作る。内容が変われば、コミットの識別子も変わる。

共有済みの履歴を書き換えると、他の人が持つ履歴とずれる。すでにpushしたものは、修正用の新しいコミットを追加する方法も検討しよう。この記事ではforce pushを使わないよ。

ステージ済みの変更を先に読む

amendには、基本的にステージした内容が使われる。入れたくない別作業までステージされていると、それも取り込むことがある。

git status --short
git diff --cached

この確認は実行しても履歴を変えない。対象のファイルと差分を読み、意図した変更だけかを確かめる。

一時リポジトリでの練習

空の作業場所へ移動し、次を実行する。名前とメールは、この練習先だけへ設定する。

mkdir amend-practice
cd amend-practice
git init -q
git config user.name Practice
git config user.email practice@example.com
printf 'one\n' > note.txt
git add note.txt
git commit -qm draft
printf 'two\n' >> note.txt
git add note.txt
git diff --cached
git commit --amend --no-edit
git log --oneline

この例では、--no-editでメッセージをそのまま使う。練習後のコミット数は1件、note.txtはoneとtwoの二行になる。元のハッシュと変わることも、一時リポジトリで確認したよ。

「メッセージだけ」のつもりでも確認

メッセージを直したい場合も、ステージに別の変更がないか見る。目的に合うオプションや使い方はGitの公式資料で確認し、「amendだから文字だけ変わる」と思い込まないようにしよう。

差分の三つの位置は追加前・追加後・直近コミット、移動の記録はreflogへ。

参照した公式資料

確認日:2026年10月24日。

参考・出典

公開と変更の記録
  • :初回公開

日時は日本時間です。記載のある変更は、確認できた編集記録に基づきます。更新日の違いだけから変更内容を推測して載せることはありません。

更新・訂正の方針 →

みんなのコメント 0

感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。

最初のコメントをどうぞ。