いつも忘れるので、備忘録として書いとく。
特に、addしたけどreset --hard
で消した時にいつも忘れる。
ブランチから辿れないobjectを表示する方法
fsck --lost-found
で一覧を表示できる。
$ git fsck --lost-found Checking object directories: 100% (256/256), done. Checking objects: 100% (88/88), done. dangling commit 0ae497f3455bb72de64ba5618f9dc6db32d449d0 dangling commit 15a084122e04c4219806059d3ac6b7a79bca9a29 dangling blob 23d0df1dbb0881569f1f7b5fe72c758e7ea5159d dangling blob 3478c8236e83a196a81ea3675b6f77a98c7b4d73 dangling commit 4bf454d485479e62331e6225f9dbddb4e94adba5 (中略)
commitを探す方法
$ git fsck --lost-found | grep commit | awk '{print $3}'
これでsha1が表示できるので、適当にタグ付けたりすればGUIツールで探しやすい。
$ for sha1 in `git fsck --lost-found | grep commit | awk '{print $3}'` do git tag tmp_$sha1 $sha1 done
見つけたら、cherry-pick
なり、checkout
で救い出す。
blobを探す方法
とりあえずファイルにする。
$ mkdir blob $ for sha1 in `git fsck --lost-found | grep blob | awk '{print $3}'` do git show $sha1 > blob/$sha1 done
後は、grepするなりで頑張る。