過去にリモートへpushしたコミットのコメントを変更してみる

技術
スポンサーリンク
スポンサーリンク

はじめに

こんにちは!さいけです。

今回は、タイトルの通り「過去にリモートへpushしたコミットのコメントを変更してみる」記事になります。

あらかじめ注意事項になりますが、本記事の内容を共有ブランチで行う際は自己責任でお願いします!

理由は、rebaseやgit push -fなどのコマンドを叩くためです。

上記のコマンドを叩くことで、歴史の改変を行うので、他の人がpushなどを行えなくなる等のカオスな状況を生み出す可能性があります!

さて、それではやっていきたいと思います!

やってみる

今回は、現在より5つ前のコミットのコメント、「hogeeeeeeeeeeeeee.md追加」を変えたいと思います。

以下、githubのコミットログです。

該当コミットを指定する

該当コミットを指定するには、rebaseを利用します。

具体的な指定コマンドは、以下の通りです。

$ git rebase -i HEAD~5

現在から5つ前のコミットを修正したいので、HEAD~5と指定します。

HEAD~5と指定すると、5つ前までのコミットの歴史を見ることができます。

3つ前までを見たい場合は、HEAD~3とすれば良いです。

 

次に、以下のような編集画面が出ると思います。

pick c41badb hogeeeeeeeeeeeeee.md追加 
pick 0c8384b fuga.md追加
pick 2dddef0 piyo.md追加
pick cfec910 mmm.md追加
pick 7933f20 nnn.md追加

# Rebase f0ebed6..7933f20 onto f0ebed6 (5 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop = remove commit
# l, label













この画面では、コミットに対して何かしらのアクションコマンドを指定することができます。

コミットを編集したい場合は、pickをeまたはeditに変えてあげれば良いです。

なので、以下のようになります。

e c41badb hogeeeeeeeeeeeeee.md追加 
pick 0c8384b fuga.md追加
pick 2dddef0 piyo.md追加
pick cfec910 mmm.md追加
pick 7933f20 nnn.md追加
# Rebase f0ebed6..7933f20 onto f0ebed6 (5 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop = remove commit
# l, label













今回は、「hogeeeeeeeeeeeeee.md追加」を編集したいのでpickのところをeにします。

完了したら、「:wq」で保存して終了します。

閉じると、以下のような文言が出てくると思います。

$ git rebase -i HEAD~5
Stopped at c41badb...  hogeeeeeeeeeeeeee.md追加
You can amend the commit now, with

  git commit --amend

Once you are satisfied with your changes, run

  git rebase --continue

基本的には、上記で表示された文言順に改変作業を進めていけばOKです。 

該当コミットのコメントを編集する

該当コミットのコメントを編集するには「git commit –amend」を実行します。

$ git commit --amend

実行後、以下のような文言が表示される画面になると思います。

hogeeeeeeeeeeeeee.md追加

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      Sat Apr 20 19:11:02 2019 +0900
#
# interactive rebase in progress; onto f0ebed6
# Last command done (1 command done):
#    edit c41badb hogeeeeeeeeeeeeee.md追加
# Next commands to do (4 remaining commands):
#    pick 0c8384b fuga.md追加
#    pick 2dddef0 piyo.md追加
# You are currently editing a commit while rebasing branch 'master' on 'f0ebed6'.
#
# Changes to be committed:
#       new file:   hoge.md

上部の「hogeeeeeeeeeeeeee.md追加」を変更したいコメントにします。

今回は「hoge.mdに追加」に変更します。

hoge.md追加

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      Sat Apr 20 19:11:02 2019 +0900
#
# interactive rebase in progress; onto f0ebed6
# Last command done (1 command done):
#    edit c41badb hogeeeeeeeeeeeeee.md追加
# Next commands to do (4 remaining commands):
#    pick 0c8384b fuga.md追加
#    pick 2dddef0 piyo.md追加
# You are currently editing a commit while rebasing branch 'master' on 'f0ebed6'.
#
# Changes to be committed:
#       new file:   hoge.md
#

編集が完了したら「:wq」で保存して終了します。

以下の画面が出ればOKです。

$ git commit --amend
[detached HEAD c1ed096] hoge.md追加
 Date: Sat Apr 20 19:11:02 2019 +0900
 1 file changed, 1 insertion(+)
 create mode 100644 hoge.md

コミットのコメント編集を終了する

以下コマンドで、rebaseを実行し編集を終了させます。

$ git rebase --continue

以下の画面が出ればOKです。

$ git rebase --continue
Successfully rebased and updated refs/heads/master.

リモートにpushする

さいごに、改変した結果をリモートにpushします。

普通のpushだと正常にpushできません。

理由は、ローカルとリモートの歴史の差分が生じたためです。

なので、以下の強制pushコマンドを実行します。

$ git push -f origin master

上記コマンドを実行してエラーなくリモートにpushできれば、以下のようにgithubのログが変わっているはずです。

ちゃんと「hogeeeeeeeeeeeeee.md追加」が「hoge.md追加」に変わっていますね!\(^o^)/

おわりに

いかがだったでしょうか?

今回は、過去にリモートへpushしたコミットのコメントを変更してみました。

「はじめに」にも書きましたが、共有ブランチでの歴史の改変は、カオスな状況等を生み出す可能性があります。

そのため、実施する場合は自己責任でお願いしますm(_ _)m

さいごに、そもそも話になるのですがcommit・push前には、きちんと自分のやったことを確認するように心掛けましょう!

きちんと確認できていれば、歴史の改変をする必要はないので…!

今回は以上になります、それでは!( ・∇・)ノシ

コメント