Faça uma cópia de toda a bagunça primeiro, apenas no caso.
git fsck
mostrará objetos pendentes e confirmações. Encontre o mais novo commit pendente. Eu alimentei todos os hashes de commit para gitk
, e isso mostra o mais "recente" no topo. Além de ter apenas alguns commits para lidar, eu só tinha uma única ramificação para recuperar - isso seria mais complexo se houvesse mais de uma cabeça.
Em seguida, git stash
para guardar alterações atualmente não confirmadas para inspeção.
Eu consegui então git reset --hard
para o hash de confirmação determinado acima.
git stash pop
também se fundiu de maneira bastante clara. Eu acho que tenho praticamente tudo que eu queria de volta.