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.