Git

git add したあと、commit するの忘れてて reset --hard しちゃったけど、取り戻したい

More than 5 years have passed since last update.

やっちまった〜

commit してたら最強の味方 reflog 使えるけど add しかしてないしなぁ……

でも、git は objectdb だし、add している時点で 何処かに保存されているはず!!

と思って調べたら git fsck を発見!!

どこにも属してないものが見れる!! やった!!

これで hash とれるので git unpack-file で内容だけは復元できる!!

つまり

$ git fsck | grep blob | cut -d ' ' -f3 | xargs git unpack-file

ってやるとどこにも管理されてないファイルがとりあえず復元します。

.merge_file_KhsjP3

みたいな名前になっているので、ファイル開いて中身はなんとか救出できた!!

もっと良い方法あったら教えて下さい>< って社内ブログに書いたら


上のワンライナーと同じことが実現できる git fsck --lost-found というのがあります。 参考: http://git-scm.com/docs/git-fsck


って教えてもらった!!

超便利〜

git 奥が深い……