Advertencia: ¡no use el siguiente comando a menos que quiera perder el trabajo no comprometido!
El uso git resetse ha explicado, pero también solicitó una explicación de los comandos canalizados, así que aquí va:
git ls-files -z | xargs -0 rm -f
git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached
El comando git ls-filesenumera todos los archivos que git conoce. La opción les -zimpone un formato específico, el formato esperado por ellos xargs -0, que luego los invoca rm -f, lo que significa eliminarlos sin verificar su aprobación.
En otras palabras, "enumere todos los archivos que Git conoce y elimine su copia local".
Luego llegamos a git diff, que muestra los cambios entre las diferentes versiones de elementos que Git conoce. Esos pueden ser cambios entre diferentes árboles, diferencias entre copias locales y copias remotas, etc.
Tal como se usa aquí, muestra los cambios no organizados; los archivos que ha cambiado pero que aún no ha confirmado. La opción --name-onlysignifica que solo desea los nombres de archivo (completos) y --diff-filter=Dsignifica que solo está interesado en los archivos eliminados. (Oye, ¿no acabamos de eliminar un montón de cosas?)
Esto luego se canaliza a lo xargs -0que vimos antes, lo que invoca git rm --cacheden ellas, lo que significa que se eliminan del caché, mientras que el árbol de trabajo debe dejarse solo, excepto que acaba de eliminar todos los archivos de su árbol de trabajo. Ahora también se eliminan de su índice.
En otras palabras, todos los cambios, realizados o no, han desaparecido y su árbol de trabajo está vacío. Llora, revisa tus archivos desde el origen o de forma remota, y vuelve a hacer tu trabajo. Maldice al sádico que escribió estas líneas infernales; No tengo idea de por qué alguien querría hacer esto.
TL; DR: acabas de limpiar todo; comenzar de nuevo y usar git resetde ahora en adelante.
rm -fno es un comando git y no tiene una--cachedopción. Sus archivos locales se eliminaron antes de ejecutarlos,git rmasí que no creo que pueda culpar legítimamentegit rmde nada.