( ) Git

【Git】コミットメッセージを変更する

コミットメッセージを間違えてしまい、修正したいときの対処法です。

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

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しましょう。

関連記事

Leave a Reply