Menu
Coddy logo textTech

Git Commit --amend

最終更新

git commit --amend は直前のコミットを新しいものに置き換え、メッセージを修正したり、ステージし忘れたファイルを追加したりできます。2つ目のコミットを追加するのではなく、直前のコミットを書き換えます。これによりコミットのハッシュが変わるため、まだ push していないコミットだけを amend してください。

これらをターミナルプレイグラウンドで試してみましょう。ブラウザ内の本物のシェルで、インストール不要です。

git commit --amend は 2 つ目のコミットを足すのではなく、直前のコミットを書き直したものに置き換えます。

構文

CommandWhat it does
git commit --amend直前のコミットとそのメッセージを編集する
git commit --amend -m "new message"直前のコミットのメッセージをその場で変更する
git commit --amend --no-editステージ済みファイルを追加し、メッセージはそのまま保つ

よくあるケース

GoalCommand
直前のメッセージのタイプミスを修正するgit commit --amend -m "fixed message"
忘れたファイルを直前のコミットに追加するgit add file の後に git commit --amend --no-edit
すでに push 済みのコミットを amend する(注意)amend してから git push --force-with-lease

Git commit --amend のよくある質問

直前のコミットメッセージを変更するには?
その場で置き換えるには git commit --amend -m "new message" を実行し、エディタを開いて書き直すには git commit --amend を実行します。これは直前のコミットを新しいメッセージで書き換えます。すでに push 済みのコミットには、force push する覚悟がない限り行わないでください。
忘れたファイルを直前のコミットに追加するには?
git add <file> でファイルをステージしてから、git commit --amend --no-edit を実行します。--no-edit フラグは既存のコミットメッセージを保ち、新しくステージした変更を直前のコミットにまとめるだけです。
git commit --amend は新しいコミットを作成しますか?
いいえ。コミットを追加するのではなく、直前のコミットを置き換えます。結果は1つのコミットに見えますが、技術的には新しいハッシュを持つ新しいコミットが古いものの位置を取ります。共有された履歴を amend するには force push が必要になるのはそのためです。
push 済みのコミットを amend しても安全ですか?
注意が必要です。amend はコミットを書き換えるため、push 後には git push --force-with-lease が必要になり、元のコミットをすでに pull した人に影響を与えかねません。共有ブランチでは amend よりも新しいコミットや git revert を選びましょう。
これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開けば、ブラウザ内の本物のシェルで git commit --amend を実行できます。インストール不要です。Coddy の無料インタラクティブ Git コースでも、コミットの修正を段階的に扱っています。
Coddy programming languages illustration

Coddy で Git を学ぼう

始める