間違えて 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
とかしてしまうと「ふっかつのじゅもんがちがいます」になってしまうから注意なんだって。
よかったー。わーい。