技術ブログっぽいなにか

Ruby・Railsメインでいろんなこと書きます

【git】revretしたcommitをまたrevertして戻した話


最初に間違えてpushした

先日家にいる時、インターン先の上司に「localにコミットしといてね」って言われた。

localにコミット…?リモートにpushしとけってことかなと思いcommitしてpushしました

$ git commit - 'xxxxxxxx'

$ git push



不安になってrevertした

で、その後 「いやでももし自分のところにcommitしとけってことだったらどうしよう?誰かにpullされたらコンフリクトするぞ…」と思い、commitを取り消してpushし直した。

まず取り消したいcommitの番号を取得します

$ git log --oneline
42cdd131 メール機能追加
ff0be1e1 SNS共有昨日のバグ修正

メール機能追加を取り消したいのでrevertしましょう

$git revert 42cdd131
[local 42cdd131] Revert "メール機能追加"
 11 files changed, 428 insertions(+), 82 deletions(-)
・
・
・

これで一安心。

ところが上司から「もうcommitした?」と追加で連絡が…



revertをrevertした

結局リモートにあげろってことか!と焦りながら「revertを戻すにはどうしたら…!?」と激焦りした。

結論言うと、「revertをrevertすれば良い」。

もう一度ログを見てみる。

$ git log --oneline
7d146881 Revert "メール機能追加"
42cdd131 メール機能追加
ff0be1e1 SNS共有機能のバグ修正

なんと、revertにもちゃんと番号がついている…! 冷静に考えたら当たり前なんだけど、その時は焦っててそこまで頭回らなかった。

で、この番号を使ってrevertをrevertしよう

$ git revert 7d146881
[local 9ad403ba] Revert "Revert Revert "メール機能追加""
 11 files changed, 428 insertions(+), 82 deletions(-)
 rewrite app/views/pc/xxx/index.html.erb (100%)
 rewrite app/views/pc/yyy/index.html.erb (100%)
 rewrite app/views/pc/zzz/edit.html.erb (100%)
・
・
・

よかった!できたっぽい。

で、これをpushする。

$ git push
Counting objects: 24, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (21/21), done.
Writing objects: 100% (24/24), 5.16 KiB | 0 bytes/s, done.
Total 24 (delta 13), reused 0 (delta 0)
remote: Resolving deltas: 100% (13/13), completed with 11 local objects.
To github.com:xxx/xxx.git
   7d146881..9ad403ba  local -> local




めでたしめでたし。

言葉の意味がわからなかったらちゃんと上司に確かめるようにしよう。