誤ったgit reset からの復活の呪文
誤って必要なコミットをgit resetして、復活させるのに半日かかったよ...
と、同僚の方が困っていたのでgitの機能でどうにかできないか調べた。
解決方法
Git初心者が絶対に覚えておくべきコマンド - idesaku blogを参考に、実際に手元で試してみた。
rasuyuk % git reflog
bae77f9 HEAD@{0}: HEAD~: updating HEAD
13291ee HEAD@{1}: commit: fuga
bae77f9 HEAD@{2}: commit: hoge
71adff6 HEAD@{3}: commit (initial): init
とすると、過去のコミット履歴情報が出てきたので、
rasuyuk % git reset --hard HEAD@{1} (または 13291eeでも可)
とすればfuga(HEAD)の歴史に戻ることができた。
ちなみに、試したがうまく行かなかった方法についても書いておく。
1. git checkout (hash)
fugaのハッシュタグが残っていたので試したが、'detached HEAD' state ... というエラーが出て、no branch状態になってしまった。
2. git reflog & git diff (hash) | patch -p1 -R
間違えて git reset --hard HEAD^ しちゃったら - はちゅにっきこちらの方法ですが、復活したあとに再びcommitしなければいけない点があったのでスマートでないかなと。