[git] commit --amend で直前のコミットを修正する
Tech※ 本記事はアフィリエイト広告(Amazonアソシエイト)を含みます。
「コミットメッセージをミスった」「ファイルを1つ入れ忘れた」——直前のコミットのちょっとした修正は git commit --amend でやり直せます。新しいコミットを積むのではなく、直前のコミットを作り直すのがポイント。
メッセージだけ直す
git commit --amend
エディタが開くので、メッセージを書き直して保存。エディタを開かず一発で書き換えるなら -m。
git commit --amend -m "正しいコミットメッセージ"
ファイルの入れ忘れを追加する
直前のコミットに含め忘れたファイルを、ステージしてから amend します。
git add forgotten-file.ts
git commit --amend --no-edit
--no-edit を付けると、メッセージは変えずに内容だけ更新できます。
仕組み(重要)
--amend は直前のコミットを「修正」しているように見えますが、実際は新しいコミットを作って古いものと置き換えています。つまりコミットハッシュが変わります。
ここが最大の注意点。
ハマりどころ・メモ
- ⚠️ push 済みのコミットは amend しない。ハッシュが変わるので、リモートと履歴が食い違い、
git pushが拒否される(--forceが必要になり、共同作業ではトラブルの元)。amend はまだ push していないローカルコミットにだけ使う。 - どうしても push 済みを直すなら、
--force-with-lease(単純な--forceより安全)を使い、かつ他の人がそのブランチを触っていないことを確認する。 - もっと前のコミットを直したいときは
--amendではなくgit rebase -i(インタラクティブリベース)の出番。
「直前のやつだけ、push 前にサッと直す」用途では --amend が一番手軽です。
git