【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
めでたしめでたし。
言葉の意味がわからなかったらちゃんと上司に確かめるようにしよう。