Recupera los files que se agregaron a git, no se han confirmado y luego se borraron accidentalmente mediante el restablecimiento de git –duro

Tengo un gran problema Ayer confundí las terminales de desarrollo y producción abiertas una al lado de la otra y corrí

git add . 

en producción. Eso causó la puesta en escena de todos los files en la ruta pública / cargas. Cuando lo intenté

 git status 

Mostraba que todos los files en público / cargas están en etapas y listos para confirmar. Pero nunca cometí estos cambios, porque en la producción no quiero ningún commit o empuje. La key SSH en producción no tiene permiso para enviar, solo clonar / tirar.

Así que ejecuté estos commands para forzar la extracción de mi nuevo código del repository remoto

 git fetch --all git reset --hard origin/master git pull origin master 

Pero ahora descubro que ha eliminado todos los files en la ruta pública / uploads y el directory en sí mismo. Cuando reviso

 git status 

Veo "Su sucursal está actualizada con 'origin / master'". ¿Hay alguna manera de recuperar files del directory eliminado? Estos files son bastante importantes …

Por lo que entiendo, git add registra sus files de arguments en el repository incluso antes de que se hayan confirmado. Si no están comprometidos, serán recogidos más tarde. Por lo tanto, debería haber una forma de restaurar los files del repository si actúa con prontitud.

Intente ejecutar el siguiente script bash en la raíz de su directory de repository. Creará un nuevo subdirectory recovering_lost_files que contendrá los objects de git que son más nuevos que su commit de HEAD (y por lo tanto corresponden a files de git add -ed pero no comprometidos). Lamentablemente, los nombres de los files no se recuperarán automáticamente.

recover_lost_files :

 #!/usr/bin/env bash headcommit="$(git log --format=format:%H)" headcommitobject=".git/objects/${headcommit:0:2}/${headcommit:2}" mkdir recovering_lost_files find .git/objects/ -type f -newer "$headcommitobject"|while read -r path do obj="${path#.git/objects/}" obj="${obj/\/}" git cat-file -p $obj > recovering_lost_files/$obj done