Git

【Git】コミットメッセージを後から修正する方法

コミットメッセージは他の開発者メンバーにどのような修正・追加したかを伝える重要な役割があります。
そんなコミットメッセージの内容が後から見返した時に間違っていたら!?大問題にはなりませんが、見つけてしまった以上気になりますよね。。

本記事では、コミットメッセージを後から修正する方法について解説しています。
直前のコミットメッセージであれば、比較的簡単に修正することができます。2つ以上前のコミットとなると直前の修正に比べると難易度は少し上がりますが、頑張って習得しましょう!

Gitの学習におすすめ参考書
改訂2版 わかばちゃんと学ぶ Git使い方入門

本書情報
著者湊川 あい
発売日2021/6/12
ページ数280ページ
Kindle版
レビュー
(Amazon)
(84件)
先輩くん
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
後輩ちゃん
後輩ちゃん
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!

綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック

本書情報
出版社オライリージャパン
著者Dustin Boswell / Trevor Foucher
発売日2012/6/23
ページ数260ページ
レビュー
(Amazon)
(620件)
先輩くん
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!

直前のコミットメッセージを修正する

まず始めに直前のコミットメッセージを修正する方法から紹介していきます。
git add index.html

git commit -m "headerを修正"
# 修正したのはheaderじゃなくて、footerだった。。
このように間違って、直前のコミットメッセージを記載してしまった場合はgit commit –amendコマンドを使います。
git commit --amend -m "footerを修正"
# コミットメッセージの修正
本当にコミットメッセージが修正されているかgit logコマンドを実行して確認してみましょう。
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.
#
めちゃくちゃ長いテキストが書かれているviエディタが表示され逃げ出したくなりますが安心してください、見る場所は修正したいコミットたった1行だけで大丈夫です。
pick 29f3aa1 3回目のコミット #このコミットを修正したい!
修正したいコミットの行頭に書かれている「pick」の文字を「edit」に修正します。修正後は保存をしエディタを閉じます。
edit 29f3aa1 3回目のコミット #pick→editに変更!

viエディタを触ったことのない人は、以下の手順で進めてください。

viエディタ編集手順

  1. iキーを押します。(コマンドモード→入力モード)
  2. エディタのテキストを編集できるようになるので、pick→editに修正します。
  3. escキーを押します。(入力モード→コマンドモード)
  4. :wq!を入力してEnterを押します。(保存して強制終了)

git commit –amendコマンドで、修正後のコミットメッセージを設定します。
# 正しいコミットメッセージを記載
git commit --amend -m "2回目のコミット"
git rebase –continueコマンドを実行することで、コミットメッセージの修正が完了です。
git rebase --continue
最後にgit logコマンドで、正しくコミットメッセージが修正されているか確認します。
git log --oneline
29f3aa1 3回目のコミット
02269b7 2回目のコミット # コミットメッセージが修正されている!
02166e2 1回目のコミット

以上が、直前のコミットメッセージを修正する一連の流れになります。

まとめ

今回は、コミットメッセージを後から修正する方法について解説しました。
解説で出てきたコマンド類の詳細を知りたい方は、以下の記事を参考ください。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村