🖌️

Gitでプッシュ済みのコミットメッセージを変更する

2024/04/25に公開

はじめに

うっかりコミットメッセージを変更せずにプッシュしてしまうことがたまにあります。
コミットメッセージを入力する段階って個人的には開発が終わって気が抜けている状態が多いので、抜けてしまいがちです。

今回プッシュ後にコミットメッセージを変更する方法を試したので共有します。

方法

git logで履歴の確認

まずはgit logコマンドで該当のコミットを確認しておきましょう。

コミットメッセージを変更したいコミットを指定

該当コミットを確認したらgit rebaseコマンドでコミットを指定します。
例えば該当のコミットが2つ前のものだった場合は以下のようになります。

git rebase -i HEAD~2

変更したいコミットのpickeditに変更

git rebaseコマンドを実行すると以下のような表示が出ると思います。

pick c7bg342 サンプルコミット
pick 16g7f14 メッセージ変更前

修正したいコミットの冒頭のpickeditに変更します。
変更するには挿入モードにする必要があり、Vimコマンドであるiをクリックします。そうすると編集可能になります。
編集後はesc->:wqの順でクリックし、変更を保存します。

コミットを修正する

git commit --amendコマンドを実行します。すると以下のような表示が出ます。

メッセージ変更前

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      Tue Apr 23 13:23:51 2024 +0900
#
# On branch feature/issue#1
# Your branch is up to date with 'origin/sample'.
#
# Changes to be committed:
#       modified:   sample.txt

Vimコマンドで挿入モードに変更し、メッセージを修正した後にesc:wqで保存して終了します。

プッシュする

コミットメッセージの変更が終わったので、最後にリモートリポジトリにプッシュします。
単なるpushコマンドだと拒否されるので--force-with-leaseオプションを付与してプッシュします。
--force-with-leaseオプションについては下記の記事が詳しいので確認してください。

--force は有害だという考え; git の --force-with-lease を理解する

git push --force-with-lease origin <ブランチ名>

完了

お疲れさまでした!以上で作業完了です。確認すると無事コミットメッセージの変更が成功しているはずです。

Discussion