間違えてgit reset --hard してしまったのを取り消す

git reset --hard HEAD~2

と実行したが、実行した後戻し過ぎたと気づきました。。。

~/p/r/todo_management_app (status|✔) [127] $ git reset --hard HEAD~2
HEAD is now at e718fea remove conflicts

 

調べたら、git reflog コマンドでやり直せるとの事なので、やってみました!

-n 数字 というオプションで、何個分表示させるか指定できます。

~/p/r/todo_management_app (status|✔) $ git reflog -n 4
e718fea (HEAD -> status) HEAD@{0}: reset: moving to HEAD~2
2024621 HEAD@{1}: commit: add gem rubocop
095ba15 HEAD@{2}: commit: add conditions of sort_tasks, and change form_with to form_tag
e718fea (HEAD -> status) HEAD@{3}: commit (merge): remove conflicts

 

HEAD@{2}に戻せばいいとわかったので、以下のコマンドを実行します。 

~/p/r/todo_management_app (status|✔) [128] $ git reset --hard  "HEAD@{2}"
HEAD is now at 095ba15 add conditions of sort_tasks, and change form_with to form_tag

 

git log コマンドで確かめてみると無事戻せていました!

~/p/r/todo_management_app (status|✔) $ git log --oneline -n 3
095ba15 (HEAD -> status) add conditions of sort_tasks, and change form_with to form_tag
e718fea remove conflicts
7f96de3 (origin/master, heroku/master, master) Merge pull request #7 from hayashiyoshino/deadline