# rm all files
git rm -r --cached .
# add all files as per new .gitignore
git add .
# now, commit for new .gitignore to apply
git commit -m ".gitignore is now working"
( asegúrese de confirmar primero los cambios que desea conservar , para evitar cualquier incidente como comenta jball037 a continuación .
Sin embargo, la--cached opción mantendrá sus archivos intactos en su disco).
He descubierto que el paso git add es innecesario, cuando ejecuto el estado git después de git rm --cached, los archivos eliminados ya están en el área de preparación y puede continuar y confirmarlos.
@VonC lo siento, eso no estaba destinado a ser un despotricar o un palo :) Pero sí, utilicé --cached y todos mis cambios no confirmados se perdieron cuando revisé mis archivos. Presa del pánico por un momento, pero "git reset HEAD" restaurado mis archivos (pero esta vez sin los archivos que se especifica en .gitignore, por lo que su solución aún funcionaba!)
jball037
3
@ jball037 Bien. Agregué la advertencia y edité la respuesta en consecuencia.
VonC
1
si solo leo una línea más antes de hacer esto "(asegúrese de confirmar primero los cambios que desea conservar, para evitar cualquier incidente como jball037" #fml
Aiden Strydom
9
Podría malinterpretarlo, pero ¿está tratando de eliminar archivos recientemente ignorados o desea ignorar nuevas modificaciones a estos archivos? En este caso, la cosa está funcionando.
Si desea eliminar archivos ignorados previamente comprometidos, use
Esta es una razón muy simple para eliminar archivos después de actualizar mi .gitignore Sin embargo, necesita un par de actualizaciones menores: `` git rm –cached git ls-files -i –exclude-standard git commit -m 'clean' '
Aaron
1
Sé que esta es una vieja pregunta, pero la solución de Gracchus no funciona si los nombres de archivo contienen espacios. La solución de VonC para archivar nombres con espacios es no eliminarlos utilizando --ignore-unmatch, luego eliminarlos manualmente, pero esto no funcionará bien si hay muchos.
Aquí hay una solución que utiliza matrices bash para capturar todos los archivos.
Respuestas:
La solución mencionada en "el archivo .gitignore no ignora " es un poco extrema, pero debería funcionar:
( asegúrese de confirmar primero los cambios que desea conservar , para evitar cualquier incidente como comenta jball037 a continuación .
Sin embargo, la
--cached
opción mantendrá sus archivos intactos en su disco).También tiene otra solución más detallada en la publicación del blog " Hacer que Git ignore los archivos ya rastreados ":
Bassim sugiere en su edición :
Archivos con espacio en sus caminos
fuente
Podría malinterpretarlo, pero ¿está tratando de eliminar archivos recientemente ignorados o desea ignorar nuevas modificaciones a estos archivos? En este caso, la cosa está funcionando.
Si desea eliminar archivos ignorados previamente comprometidos, use
fuente
git ls-files -i –exclude-standard
git commit -m 'clean' 'Sé que esta es una vieja pregunta, pero la solución de Gracchus no funciona si los nombres de archivo contienen espacios. La solución de VonC para archivar nombres con espacios es no eliminarlos utilizando
--ignore-unmatch
, luego eliminarlos manualmente, pero esto no funcionará bien si hay muchos.Aquí hay una solución que utiliza matrices bash para capturar todos los archivos.
fuente