消えたGitコミットを復旧する
Gitを使っていると、誤ってgit reset --hardを実行してしまったり、rebaseの操作をミスしたりして、コミットが見えなくなることがあります。そんなときに役立つのがgit reflogです。
git logが現在のブランチからたどれるコミット履歴を表示するのに対し、git reflogはHEADが過去に指していたコミットの履歴を表示します。
そのため、resetやrebase、commit --amendなどによって通常の履歴から切り離され、見えなくなったコミットでも、reflogから見つけられる場合があります。
復旧するためには、まずgit reflogで戻したいコミットを探します。対象が見つかったら、git branch <復旧用ブランチ名> <コミットハッシュ>で復旧用のブランチを作成します。現在のブランチを変更しないため、安全にコミットを復旧できます。
reflogはローカルに保存される情報で、一定期間が経過すると期限切れとなり、削除されます。誤操作に気付いたときは早めに確認するとよいでしょう。
HM
