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

コミットした直後に、入れ忘れた一行に気付いた。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だから文字だけ変わる」と思い込まないようにしよう。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。