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

WEB制作の現場で本当に起きる現場で知らないと本当に困る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)によるコミットメッセージの変更が完了しました。