[git] commit --amend で直前のコミットを修正する

Tech

※ 本記事はアフィリエイト広告(Amazonアソシエイト)を含みます。

[git] commit --amend で直前のコミットを修正する

「コミットメッセージをミスった」「ファイルを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