LoginSignup
24
12

More than 3 years have passed since last update.

git revert を git revertした

Last updated at Posted at 2020-10-11

git revert とは

一言で言えば「既存のコミットを取り消す」コマンドです。

似たコマンドでgit resetがありますが、
・git reset: そのまま過去に戻す
・git revert: 「コミットを打ち消したよ」というコミットを新たに追加して、状況を戻す
という違いがあります。

両方とも、できればあまり使いたくないですね。

revertをrevertの経緯

では、なんでrevertをrevertしたのか、ですが、

最新コミットが不要だったので、revertした
やっぱりそのコミットは必要だった
revertしたことをrevertしたい

という経緯です。

一から書き直してもいいですが、
やっぱりまるまる一気に元に戻したい。。。

revertをrevertする

それでは実際にどんな感じだったか、可能な範囲で晒していきます。

※ ブランチ名を仮にfix_user_imagesとします。

1、最初のrevert

# "git revert [コミット番号]"で、そのコミットを無かったことにする
$ git revert fb286b771

[fix_user_images 2c93f2815] Revert "画像サイズ修正"
 3 files changed, 1 insertion(+), 8 deletions(-)
 create mode 100644 〜〜/〜〜

2、revertをrevert

1でなくなくrevertしたあとに、同じブランチで既に新たな開発を始めていたので、
その開発内容はサラにします(泣

# ログ確認
$ git log --oneline

2829851e0 (HEAD -> fix_user_images) Revert "画像サイズ修正"
2c93f2815 Revert "ユーザー画像追加"
7b1b3b230 (origin/fix_user_images) Merge branch 'develop' of gitlab.〜〜〜:〜〜〜 into fix_user_images
...


# 最新コミットに戻す
$ git reset --hard HEAD

HEAD is now at 2829851e0 Revert "画像サイズ修正"


# revertして作られたコミット「"Revert "画像サイズ修正"」をrevert
$ git revert 2c93f2815

Removing 〜〜/〜〜
[fix_user_images 619bf7743] Revert "Revert "画像サイズ修正""
 3 files changed, 8 insertions(+), 1 deletion(-)
 delete mode 100644 〜〜/〜〜

3、無事反映を確認

$ git log --oneline

619bf7743 (HEAD -> fix_user_images ) Revert "Revert "画像サイズ修正""
2c93f2815 Revert "画像サイズ修正"
7b1b3b230 (origin/fix_user_images) Merge branch 'develop' of gitlab.〜〜〜:〜〜〜 into fix_user_images
fb286b771 画像サイズ修正
...

終わりに

・git revert
・git reset
・git rebase
は「3大叩いてはいけないgitコマンド」としてインプットしていましたが、
実際はまだまだこんなもんじゃないんだろうなと思います。

今後頻繁に叩く必要が出ないことを祈ります。。。。

24
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
12