🖌️
Gitでプッシュ済みのコミットメッセージを変更する
はじめに
うっかりコミットメッセージを変更せずにプッシュしてしまうことがたまにあります。
コミットメッセージを入力する段階って個人的には開発が終わって気が抜けている状態が多いので、抜けてしまいがちです。
今回プッシュ後にコミットメッセージを変更する方法を試したので共有します。
方法
git logで履歴の確認
まずはgit log
コマンドで該当のコミットを確認しておきましょう。
コミットメッセージを変更したいコミットを指定
該当コミットを確認したらgit rebase
コマンドでコミットを指定します。
例えば該当のコミットが2つ前のものだった場合は以下のようになります。
git rebase -i HEAD~2
pick
をedit
に変更
変更したいコミットのgit rebase
コマンドを実行すると以下のような表示が出ると思います。
pick c7bg342 サンプルコミット
pick 16g7f14 メッセージ変更前
修正したいコミットの冒頭のpick
をedit
に変更します。
変更するには挿入モードにする必要があり、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