はじめに
みなさん、こんにちは。profsend開発者のぐみぃです。
みなさんはこんな経験がありますか?
「作業中に誤ってresetして、更にpushもしてしまった!もう大ピンチ...」
僕も一度そうなったことがあります。
でも、この方法をすれば、簡単に戻せます。
reflogで作業履歴を確認する
git reflog
このコマンドは、作業履歴を確認するコマンドで、
git log
との違いは、
resetなどのコマンドの履歴も含まれる
ということです。
戻し方は、
git reset --hard HEAD@{数字}
数字の確認は下記の通りになります。
$ git reflog
作業ID HEAD@{数字}: 作業内容
↑ここ
ただ、reflogでは表示できる数に限りがあるので、
間違えたらすぐに対処しましょう!
もしsubmoduleがあった場合
gitには、別のリポジトリを取り込める、
submoduleという機能があります。
その場合は更に簡単にできます。
まず、submoduleがあるリポジトリのgithubページへアクセスしてください。
そして、
コミット名の部分をクリックし、
git merge コミットID
もしくは、
git cherry-pick コミットID
でリポジトリに取り込めば、リポジトリを復旧できます。
あとはpushすれば完全に復旧できます!
参考