コミットメッセージは他の開発者メンバーにどのような修正・追加したかを伝える重要な役割があります。
そんなコミットメッセージの内容が後から見返した時に間違っていたら!?大問題にはなりませんが、見つけてしまった以上気になりますよね。。
本記事では、コミットメッセージを後から修正する方法について解説しています。
直前のコミットメッセージであれば、比較的簡単に修正することができます。2つ以上前のコミットとなると直前の修正に比べると難易度は少し上がりますが、頑張って習得しましょう!
Gitの学習におすすめ参考書
改訂2版 わかばちゃんと学ぶ Git使い方入門
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
後輩ちゃん
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!
直前のコミットメッセージを修正する
まず始めに直前のコミットメッセージを修正する方法から紹介していきます。git add index.html
git commit -m "headerを修正"
# 修正したのはheaderじゃなくて、footerだった。。
git commit --amend -m "footerを修正"
# コミットメッセージの修正
git log
commit 5ddba7c04c835a2b8f45bda509ec46323d9e51d7 (HEAD -> master)
Author: Test User <TestUser@gmail.com>
Date: Fri Mar 25 10:04:59 2022 +0900
footerを修正
最新のコミットメッセージが修正後の「footerを修正」になっていることが確認できました。
以上が、直前のコミットメッセージを修正する一連の流れになります。
直前ではないコミットメッセージを修正する
次に直前ではないコミットメッセージを修正する方法について紹介します。git logコマンドで間違えているコミットメッセージを確認します。今回はコミットが複数あるので–onelineオプションを付けて一行でコミットを表示させます。
git log --oneline
273d2a3 3回目のコミット
d7593c4 3回目のコミット # 2回目のコミットなのに3回目になっている。。
02166e2 1回目のコミット
2つ目のコミットメッセージ(d7593c4)が間違っているので、こちらのコミットメッセージを修正します。
まずはgit rebase -i HEAD~nコマンドを実行します。このコマンドは、コミットの一覧をテキストエディタで表示してくれます。最後のnを数字で指定することで、nつ前のコミットが一番上に表示されます。今回の場合、2つ目のコミットを修正したいので、nに入れる数値は「2」になります。
git rebase -i HEAD~2
pick 29f3aa1 3回目のコミット
pick 02269b7 3回目のコミット
hint: Waiting for your editor to close the file...
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup [-C | -c] <commit> = like "squash" but keep only the previous
# commit's log message, unless -C is used, in which case
# keep only this commit's message; -c is same as -C but
# opens the editor
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# . create a merge commit using the original merge commit's
# . message (or the oneline, if no original merge commit was
# . specified); use -c <commit> to reword the commit message
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
pick 29f3aa1 3回目のコミット #このコミットを修正したい!
edit 29f3aa1 3回目のコミット #pick→editに変更!
viエディタを触ったことのない人は、以下の手順で進めてください。
viエディタ編集手順
- iキーを押します。(コマンドモード→入力モード)
- エディタのテキストを編集できるようになるので、pick→editに修正します。
- escキーを押します。(入力モード→コマンドモード)
- :wq!を入力してEnterを押します。(保存して強制終了)
# 正しいコミットメッセージを記載
git commit --amend -m "2回目のコミット"
git rebase --continue
git log --oneline
29f3aa1 3回目のコミット
02269b7 2回目のコミット # コミットメッセージが修正されている!
02166e2 1回目のコミット
以上が、直前のコミットメッセージを修正する一連の流れになります。
まとめ
今回は、コミットメッセージを後から修正する方法について解説しました。
解説で出てきたコマンド類の詳細を知りたい方は、以下の記事を参考ください。