Gitで直前のコミットコメントを修正する方法|push前・push済みの2パターンで解説

Git/GitHub

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済みのコミットを修正すると、リモートリポジトリ上の履歴を書き換えることになります。

そのため、チーム開発で他の人も同じブランチを使っている場合は、勝手に実行しない方が安全です。

自分だけが使っている作業ブランチであれば、次の流れで修正します。

  1. 直前のコミットコメントを修正する
  2. リモートリポジトリに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 --amendgit push --force-with-leaseで直前のコミットコメントを修正できます。

タイトルとURLをコピーしました