Gitでコミットしたあとに、コミットコメントを間違えたことに気づきましたか?。
直前のコミットコメントであれば、git commit --amendを使って修正できます。
まだpushしていない場合と、すでにpush済みの場合では対応が変わります。
この記事では、Gitで直前のコミットコメントを修正する方法を、pushしていない場合とpush済みの場合の2パターンで解説します。
直前のコミットコメントを確認する
まず、直前のコミットコメントを確認します。
ターミナルで、Git管理しているプロジェクトのフォルダへ移動します。
そのあと、次のコマンドを実行します。
git log -n 1
実行すると、直前のコミットが1件だけ表示されます。
a1b2c3d ログイン画面を追加
このコメントを修正したい場合、git commit --amendを使います。
作業前に、現在の状態も確認しておきます。
git status
修正中のファイルが残っている場合は、先に保存するか、別のコミットとして扱うかを決めてから進めます。
コミットコメントだけを直したい場合は、作業中の変更がない状態で行うと分かりやすいです。
pushしていない場合の修正方法
まだリモートリポジトリにpushしていない場合は、比較的簡単に修正できます。
直前のコミットコメントを修正するには、次のコマンドを実行します。
git commit --amend -m "新しいコミットコメント"
たとえば、直前のコミットコメントを「お問い合わせフォームを追加」に直す場合は、次のように書きます。
git commit --amend -m "お問い合わせフォームを追加"
これで、直前のコミットコメントが新しい内容に置き換わります。
修正できたか確認します。
git log -n 1
次のように表示されればOKです。
d4e5f6g お問い合わせフォームを追加
このとき、コミットIDは変わります。
コミットコメントを変えただけでも、Git上では直前のコミットを作り直した扱いになるためです。
まだpushしていない場合は、通常どおりpushすれば問題ありません。
git push
エディタでコミットコメントを修正する方法
-mを使わずに、エディタでコミットコメントを修正することもできます。
git commit --amend
このコマンドを実行すると、エディタが開きます。
表示されたコミットコメントを編集して、保存して閉じます。
エディタ操作に慣れていない場合は、次のように-mを使う方が分かりやすいです。
git commit --amend -m "新しいコミットコメント"
push済みの場合の修正方法
すでにGitHubやGitLabなどにpush済みの場合も、直前のコミットコメントは修正できます。
ただし、push済みのコミットを修正すると、リモートリポジトリ上の履歴を書き換えることになります。
そのため、チーム開発で他の人も同じブランチを使っている場合は、勝手に実行しない方が安全です。
自分だけが使っている作業ブランチであれば、次の流れで修正します。
- 直前のコミットコメントを修正する
- リモートリポジトリにforce pushする
まず、直前のコミットコメントを修正します。
git commit --amend -m "新しいコミットコメント"
例として、次のように修正します。
git commit --amend -m "お問い合わせフォームを追加"
修正できたか確認します。
git log -n 1
次に、修正したコミットをリモートリポジトリへ反映します。
push済みのコミットを修正した場合、通常のgit pushでは失敗することがあります。
git push
この場合は、次のように--force-with-leaseを使ってpushします。
git push --force-with-lease origin ブランチ名
たとえば、ブランチ名がfeature/contact-formの場合は、次のようになります。
git push --force-with-lease origin feature/contact-form
--force-with-leaseは、リモート側に自分が把握していない変更がある場合にpushを止めてくれるため、単純な--forceより安全に使いやすいです。
ブランチ名が分からない場合は、次のコマンドで確認できます。
git branch
*がついている行が、現在作業しているブランチです。
* feature/contact-form
main
この場合、現在のブランチはfeature/contact-formです。
push済みの場合に注意すること
push済みのコミットコメントを修正すると、コミットIDが変わります。
つまり、リモートリポジトリにある古いコミットを、新しいコミットで置き換えることになります。
自分だけが使っている作業ブランチなら、問題になりにくいです。
しかし、次のような場合は注意が必要です。
- 他の人も同じブランチを使っている
- すでにレビュー中のプルリクエストがある
- mainブランチやdevelopブランチに直接pushしている
- チームの運用ルールでforce pushが禁止されている
特に、共有ブランチでforce pushすると、他の人の作業に影響する可能性があります。
チーム開発では、push済みのコミットコメントを直したい場合、先にチームのルールを確認してください。
個人開発や自分専用の作業ブランチであれば、--force-with-leaseを使って修正できます。
push前とpush済みの違い
push前とpush済みでは、対応の重さが変わります。
| 状態 | 使うコマンド | 注意点 |
|---|---|---|
| まだpushしていない | git commit --amend -m "新しいコメント" | そのまま通常のgit pushでよい |
| すでにpush済み | git commit --amend -m "新しいコメント"git push --force-with-lease origin ブランチ名 | リモートの履歴を書き換えるため注意が必要 |
ポイントは、push前ならローカルだけの修正で済むことです。
push済みの場合は、リモートリポジトリの履歴も更新する必要があります。
実際のコマンド例
pushしていない場合は、次の流れです。
git log -n 1
git commit --amend -m "お問い合わせフォームを追加"
git log -n 1
git push
push済みの場合は、次の流れです。
git log -n 1
git commit --amend -m "お問い合わせフォームを追加"
git log -n 1
git branch
git push --force-with-lease origin feature/contact-form
feature/contact-formの部分は、自分のブランチ名に置き換えてください。
通常のpushで失敗する理由
push済みのコミットを--amendで修正すると、Git上では別のコミットとして扱われます。
そのため、リモートリポジトリにあるコミットと、自分の手元にあるコミットが一致しなくなります。
この状態で通常のpushをすると、Gitは安全のためにpushを止めることがあります。
git push
その場合、リモートリポジトリの履歴を置き換えるために、次のようにpushします。
git push --force-with-lease origin ブランチ名
ただし、共有ブランチでは慎重に使ってください。
まとめ
Gitで直前のコミットコメントを修正するには、git commit --amendを使います。
まだpushしていない場合は、次のコマンドで修正できます。
git commit --amend -m "新しいコミットコメント"
修正後は、通常どおりpushします。
git push
すでにpush済みの場合も、まずは同じようにgit commit --amendで修正します。
git commit --amend -m "新しいコミットコメント"
そのあと、リモートリポジトリに反映するために--force-with-leaseを使います。
git push --force-with-lease origin ブランチ名
push前なら比較的簡単に修正できます。
push済みの場合はリモートリポジトリの履歴を書き換えるため、チーム開発では先に運用ルールを確認してください。
自分だけが使っている作業ブランチであれば、git commit --amendとgit push --force-with-leaseで直前のコミットコメントを修正できます。

