はちゅにっき

こっちのブログはまったり更新

間違えて git reset --hard HEAD^ しちゃったら

いきなり追記

すばらしいコメントをいただきましたので、そちらも参考にしていただければと思います。
具体的には

git reflog で見失ったコミットさんを見つけるんだ!!! - 8時40分が超えられない - subtech
http://subtech.g.hatena.ne.jp/secondlife/20090629/1246255508

原文

ホントに助かりましたー。

リカバリングアロストスタッシュ
http://laafc.net/txt/git_1/


git fsck を使って、到達不能になっているコミットをみつける

$ git fsck --unreachable HEAD $(cat .git/refs/heads/*) | grep commit
unreachable commit 1c26791624dcdc735431ff8be470e9b1012a11a6
unreachable commit 523641fb8c423d3ffc05640c2b36aa4715891443
unreachable commit 1fe9a011cadde6917a2577bbdc9dad4485a299c6

1つ1つ確認する

$ git show 523641fb8c423d3ffc05640c2b36aa4715891443

目的のコミットをみつけたらパッチ形式で復元する

$ git diff 523641fb8c423d3ffc05640c2b36aa4715891443 | patch -p1 -R

ふっかつ。

$ git gc

とかしてしまうと「ふっかつのじゅもんがちがいます」になってしまうから注意なんだって。


よかったー。わーい。