Gitでコミットメッセージを変更する2つの方法|Gitやばい辞典

それは、突然やってくる。
この記事では、Gitでコミットを変更したいときの2つの方法「Amend」「Rebase」を、VSCodeとコマンドライン(以下、コマンド)の両方で解説します。
Gitを覚えるのがつらい。でも、いざという時にGitが使えないのはやばい。どうせ覚えないといけないなら、さっさとマスターするのが吉。そんな現場ですぐに役立つGit実践集。それが「Gitやばい辞典」です。
この記事でやること
目標

過去の特定の位置のコミットメッセージを変更することを目標とします。
ゴール
「Amend」「Rebase」を使います。本題に入る前に、これらを実行した後のコミット履歴のイメージをおさらいしておきます。
※「filter-repo」という方法もありますが今回は割愛します。
予備知識

本題に入る前に、「Amend」「Rebase」を実行した後のコミット履歴のイメージをおさらいしておきます。
目次
1.Amendでコミットメッセージを変更する方法

Amendは直前のコミットメッセージを変更することができます。それ以外のコミットメッセージを変更したい場合は、次のRebase(reword)を使います。
ちなみに、Amendとは、憲法の修正などにも使われる『不備を正して、より良い形に改める(是正する)』という意味があります。
コマンドでコミットメッセージを変更する方法

こちらの「テスト」を「コミット3」に変えたいと思います。
git commit --amend -m "コミット3"このようにコマンドを実行します。

ローカルだけが「コミット3」に変わりました。
git push -f origin mainすでに、プッシュ済の場合は強制プッシュしてリモートに反映する必要があります。

このとおり、コミットメッセージの変更が完了しました。
VSCodeでコミットメッセージを変更する方法

VSCodeでもコミットメッセージの変更が可能です。
「⋯」から「コミット(修正)」をクリックします。

コミットメッセージエディタが開くので、「テスト」を「コミット3」に変更します。
保存してファイルを閉じると自動的に処理が開始されます。

このとおり、ローカルだけコミットメッセージの変更が完了しました。

強制プッシュもVSCodeで可能です。

怖いメッセージが表示されるので「OK」をクリック。

このとおり、VSCodeでコミットメッセージの変更が完了しました。
2.Rebase(reword)でコミットメッセージを変更する方法

次にRebaseでコミットメッセージを変更する方法を解説します。コミットメッセージの変更はインタラクティブリベースの「reword」を使います。

こちらはリベース前の状態です。「テスト」を「コミット0」に変更したいと思います。
git rebase -i 75abbb6
または
git rebase -i --rootコマンドの場合は、「git rebase -i ハッシュ値」を実行します。「-i」を指定するとインタラクティブリベース(対話式で進める)になります。ハッシュ値は修正したコミットの1つ前のコミットのハッシュ値を指定します。最初からすべて修正したい場合は「--root」を指定することもできます。

VSCodeでも同じ作業が可能です。こちらも消したいコミットの1つ前をクリックして、「Rebase current branch on this Comment」をクリックします。

確認ダイアログが表示されるので、「Launch interactive Rebase in new Terminal」のチェックを入れて「Yes, rebase」をクリックします。

Rebaseのインタラクティブモードが開始され、エディタ(Vim)が起動します。VimにはTODOリストが表示されます。

TODOリストには、左からコマンド、コミットハッシュ値、コミットメッセージが記載されています。並び順が日付の昇順(上が古い)になっているのでご注意ください。

今回は「テスト」コミットを変更したいので「テスト」の行の「pick」を「reword」に変更します。TODOリストでは基本的にコマンドだけを編集して、次のステップで実際の修正を行います。
:wq編集したら「wq」で保存してVimを終了します。

すると、再度Vimが起動し今度はコミットメッセージの変更ができる状態になります。
:wq編集したら「wq」で保存してVimを終了します。

コミットメッセージの変更処理が実行され、ローカルだけ変更が完了しました。

「プッシュ(強制)」をクリックします。

「変更の強制プッシュを行おうとしていますが、これは破壊的なことがあり、他人の変更を謝って上書きする可能性があります。続行しますか?」
と怖いメッセージが出たら「OK」をクリックします。
git push -f origin main強制プッシュのコマンドはこちら。

これで、Rebase(reword)によるコミットメッセージの変更が完了しました。


