コミットメッセージを間違えてしまい、修正したいときの対処法です。
直前のコミットメッセージを修正
git commit --amend
amend は「修正する、改める」といった意味です。
vi エディタが起動するので、コミットメッセージを修正して保存しましょう。
過去のコミットメッセージを修正
直前よりも古いコミットメッセージはgit rebase
を使って、過去に遡ってamendしていきます。
rebase で修正するコミットまで遡る
git rebase -i <ハッシュ or HEAD~数字>
ハッシュ or HEAD~数字
のいずれかを使って、過去のコミットにさかのぼります
ハッシュ指定の例
ハッシュの一つ次のコミットまで遡るので、修正したいコミットのハッシュではなく、一つ過去のハッシュを指定しましょう。
修正3 8se7f8s9a7fse
修正0 hfuasyhf98saje <- このコミットメッセージを修正したいなら...
修正1 98es9au0f9uaf <- このハッシュをコピーする
git rebase -i 98es9au0f9uaf
HEAD 指定の例
HEAD~数字
で、指定した数字の分遡ります。
git rebase -i HEAD~3 // 3つ分過去へ遡れる
vi エディタで修正対象のコミットを指定する
rebase -i
を開始すると、vi エディタが起動します。
pick 8se7f8s9a7fse 修正3
pick hfuasyhf98saje 修正0
pick 98es9au0f9uaf 修正1
...
のように表示されるので、修正を加えたいコミットをpick
からedit
に変更します。
pick 8se7f8s9a7fse 修正3
edit hfuasyhf98saje 修正0
pick 98es9au0f9uaf 修正1
...
修正したら保存します。すると rebase が開始されます。
コミットメッセージの修正
rebase を開始すると、さきほど edit に変更したコミットに切り替わります(そのため、git log
でログ を見ると edit にしたコミットがHEAD
になっているはずです)
また、開始時に下記のようなメッセージが表示されます。
Stopped at hfuasyhf98saje... 修正0
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
先程 edit に変更した修正0
のコミットで rebase が止まりました。
※ 修正するコミットを間違えた場合は、何も変更せずにgit rebase --continue
で rebase を最後まで進めましょう。
では、コミットメッセージをamendで修正します。
git commit --amend
rebase を進める
今のままだと過去のコミットにいる状態になってしまうので、修正が完了したら rebase を進めます。
git rebase --continue
今回は他に edit に変更したコミットがないのと、ファイルの修正をしていないのでコンフリクトも起こらないため、最後まで rebase が進んで下記のメッセージが表示されます。
Successfully rebased and updated ブランチ名
もし edit に変更したコミットが複数ある場合は、そのたびに修正してgit rebase --continue
しましょう。