Git: ¿Recuperación de files posible después de la eliminación local antes del envío?

Quería "limpiar" mi repository de git antes de presionar quitando cada file JPG, así que ingresé:

find . | xargs rm *.png 

en la raíz de git y ahora todo está deltado . También mis files * .py se eliminan, pero no sé por qué? Es una máquina Linux, Ubuntu. ¿Hay alguna posibilidad de recuperar mis files? Tal vez por mi sistema operativo?

El command que escribió es completamente incorrecto:

 find . 

Este command genera el nombre de cada file y directory a continuación . , incluidos los files ocultos.

 xargs 

Este command toma su input y ejecuta el command dado como su argumento, alimentándolo una línea a la vez como argumento. Por lo tanto, ejecutará rm *.png <line1_from_find> , luego rm *.png <line2_from_find> , etc.

No hay salvaguardas como stop on errors, por lo que si dejas que el command se ejecute por completo, desvinculó todos los files y sabes que tiene un tree de directorys vacío. Y git no lo ayudará, porque funciona guardando sus metadatos y estado actual dentro de un directory .git en la raíz del directory de trabajo. En el que acaba de eliminar todos los files.

Así que no, a less que hayas hecho una copy, ya sea manualmente o empujándote hacia otro lugar, es probable que ya no esté, pero mira a continuación. Para reference futura, aquí está el command correcto para destruir todos los files que terminan en png:

 find . -name '*.png' -delete 

Opcionalmente, agregue -type f before the -delete si puede tener directorys que terminen en .png , para filtrarlos.


De acuerdo, ahora: sucede que git marca parte de su estado interno como de solo lectura, lo que honra mucho si no rm -f y es posible que puedas recuperar algunos datos de eso. Vaya al directory .git en la raíz de su directory de trabajo. Contendrá un directory de objects , y algunos files pueden haber sobrevivido allí.

Esos files son transmisiones sin formatting, puedes ver su contenido usando ese command:

 zlib-flate -uncompress <path_to_the_file 

(el command zlib-flate proviene del package qpdf en ubuntu)