Perdí todas mis modificaciones preparadas pero no confirmadas después del comando git revert --abort

Creo que me equivoqué totalmente.

He estado trabajando en un proyecto durante 2 días y estaba intentando que Magit en emacs lo comprometiera, pero seguí regresando al área de preparación sin terminar el compromiso.

En pocas palabras, salí de emacs y volví a la línea de comando y todo estaba bien con los archivos, perogit status dijo que debería hacer ungit revert --abort o alguna otra opción que no recuerdo ahora.

Bien,git revert --abort parecía estar bien, ya que quería abortar cualquier cosa que Git estuviera haciendo y quedando con mis archivos, pero en realidad llevó todos mis archivos a la última confirmación.

He perdido horas y horas de trabajo. ¿Hay alguna forma de volver al estado antes de que se emitiera este comando?

Mi git reflog es:

5fba267 HEAD@{0}: commit: Clones the spacemacs repo needed for emacs
2c9ced3 HEAD@{1}: commit: Major changes to emacs configuration
d38f9db HEAD@{2}: commit: add initial emacs configuration and vimwiki
e0e28d0 HEAD@{3}: commit: Vim whitespace showing modifications

El trabajo que hice fue todo después de 5fba267 HEAD @ {0}

EDITAR con respuesta: Usando la invaluable ayuda decodeWizard Logré hacerlo al final.

Utilizando ladangling blob no funcionó mucho porque casi no había archivos allí. Esto podría deberse a que mientras intentaba resolverlo cambié uno de los archivos a la última compra y git eliminó los otros archivos de las cosas colgantes.

Pero, toda la información necesaria está realmente en eldangling commit parte.

Así que aquí está lo que hice con la ayuda decodeWizard

Primero,copia el directorio de tu repositorio completo y solo trabajamos desde allí.

A continuación, emita el comando git:

git fsck --full

Produce algo como:

Checking object directories: 100% (256/256), done.
dangling blob 0c8676d28b6b063592493bce281530fb7098a41c
dangling blob 5040b2db1a895ea4aa69c993e0df7cd48823eaec
dangling blob 5ffc6f27406506a01aa13e9b773b574840cef7ac
dangling blob 676efa400477c8d92787a39978f73114f39e0f89
dangling commit 8a44f14eb0821859c0e1cdf0d81038c8431a1007
dangling commit 968e27b0d49b899ab2d43a964b561e4dfd2aa41f
dangling commit 9f5e56caa8b904d93acd43b05f3817ff975a0423

Ahora, mostrando eldangling commit usando el SHA:

git show - p 8a44f14eb0821859c0e1cdf0d81038c8431a1007

La salida en realidad será el git diff para eseescenificado pero nunca comprometido cambios:

commit 8a44f14eb0821859c0e1cdf0d81038c8431a1007
Author: Me <[email protected]>
Date:   Sun Jan 3 02:07:10 2016 +0000

    oO

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ec6eec8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/#bootstrap.sh#
+/emacs.d/#init.el#
+*~
diff --git a/bootstrap.sh b/bootstrap.sh

Lo que debe hacer para verificar elDate y vea el que más le convenga (en realidad, todos fueron del mismo período para mí).

Después de eso solo tiene que emitir el comando:git checkout 8a44f14eb0821859c0e1cdf0d81038c8431a1007

Y se agregarán todos los archivos para confirmar, pero nunca los habrá confirmado.

El único problema que encontré fue que después de eso te quedarás con elgit status:

HEAD detached at 8a44f14 
nothing to commit, working directory clean

Así que simplemente copié todos los archivos cambiados a mi repositorio original y todo estuvo bien.

Respuestas a la pregunta(1)

Su respuesta a la pregunta