「さっきのコミットメッセージを修正したい」ときに便利なcommit --amendを紹介
コミットの単位に気をつけ始めると、「あ、ここにもタイポが残っていた。さっきのコミットと合わせたいな」「このコミットの順番をもっと先に持っていきたい」などということが発生します。その際に利用できるGitのコマンドを今回は2つ紹介します。
1つ目はcommitコマンドのオプションである--amendの紹介です。このオプションを利用することで、直前のコミットを書き換えることができます。変更を追加したり、コミットメッセージを書き換えるといったことができます。例えば、以下のような場面で使えます。
例1:現在の変更を直前のコミットに統合する
「タイポの修正を一個忘れていた、前のコミットと一緒にしたい」というような場合です。現在、残っていたタイポの修正(login.htmlの修正)を行なった状態です。
% git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: login.html
no changes added to commit (use "git add" and/or "git commit -a")
現在のコミット履歴のログは以下のようになっています。
% git log --oneline d5d5420 (HEAD -> main) 誤字修正 53d7178 ログの出力形式を規約に合わせた 62cc568 ログイン機能の追加
誤字修正のコミットが直前に行われています。やりたいことはd5d5420 (HEAD -> main)誤字修正となっているコミットに現在の変更を合わせるということです。
現在の変更をaddして、commitコマンドを --amendオプションをつけて実行します。
% git add . % git commit --amend
commit --amendを実行すると、コミットメッセージを書き換えられるエディタが開きます。必要があればここでコミットメッセージを書き換えます。
誤字修正 # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # (以下省略)
今回は既存のコミットメッセージの「誤字修正」で問題ないのでそのままエディタを閉じます。これでコミット完了です。
% git status On branch main nothing to commit, working tree clean
% git log --oneline f6234e4 (HEAD -> main) 誤字修正 53d7178 ログの出力形式を規約に合わせた 62cc568 ログイン機能の追加
commit --amend実行前のログと比べると、「誤字修正」というメッセージは変わっていませんが、コミットのハッシュ値が変わっていることがわかります。 以下、commit --amend実行前のログです。
d5d5420 (HEAD -> main) 誤字修正
git show f6234e4コマンドを実行すると、f6234e4のコミットの変更点を確認できます。変更点に、元々コミットされていたタイポ修正と後から追加されたタイポ修正の両方が入っていることが確認できるはずです。
例2:直前のコミットメッセージを修正する
コミットメッセージ自体をタイポしてしまった、ということもあるでしょう。こんな時も commit --amendを利用することで修正できます。現在、以下の git statu の結果の通り、コードへの変更は特にありません。
% git status On branch fix-message nothing to commit, working tree clean
コミットのログを確認すると、直前のコミットのメッセージがタイポしています。
% git log --oneline 4a16d83 (HEAD -> fix-message) ログメッセージをついあk
現在の状態のまま、commit --amendを実行します。
% git commit --amend
前回の例と同じように、コミットメッセージを書き換えられるエディタが開きます。ここでメッセージを書き換えて、保存します。以下、エディタが開いて書き換えが終わったところです。
ログメッセージを追加 # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit.
保存してエディタを閉じれば修正完了です。
% git log --oneline f90d1c9 (HEAD -> fix-message) ログメッセージを追加
commit --amend実行前のログと比べると、メッセージとコミットのハッシュ値が変わっていることがわかります。以下、commit --amend実行前のログです。
4a16d83 (HEAD -> fix-message) ログメッセージをついあk
このように、メッセージだけを書き換えることもできます。commit --amendはとても便利なコマンドです。使いこなせると作業スピードも上がるはずです。使ってみたことがない方はぜひ使ってみてください。
