ignorar - ¿Cómo eliminar los archivos que se enumeran en el.gitignore pero todavía en el repositorio?
ignorar archivos git (5)
Tengo algunos archivos en mi repositorio que deben ignorarse, los agregué a .gitignore pero, por supuesto, no se eliminaron de mi repositorio.
Entonces, mi pregunta es, ¿existe un comando mágico o un script que use una rama de filtro que pueda reescribir mi historial y eliminar todos estos archivos fácilmente? ¿O simplemente un comando que creará una confirmación que los eliminará?
Como los archivos en .gitignore no se están rastreando, puede usar el comando git clean para eliminar recursivamente los archivos que no están bajo el control de versiones.
Utilice git clean -xdn
para realizar un funcionamiento en seco y ver qué se eliminará.
Luego usa git clean -xdf
para ejecutarlo.
Básicamente, git clean -h
o man git-clean
(en Unix) te ayudarán.
Tenga en cuenta que este comando también eliminará los archivos nuevos que no se encuentran en el área de preparación.
Espero eso ayude.
El git ignorará los archivos que coincidan con el patrón de .gitignore después de agregarlo a .gitignore.
Pero los archivos que ya existían en el repositorio todavía estarán en.
utilizar git rm files_ignored; git commit -m ''rm no use files''
git rm files_ignored; git commit -m ''rm no use files''
para eliminar archivos ignorados.
Hice una solución muy sencilla al manipular la salida de la declaración .gitignore con sed:
cat .gitignore | sed ''/^#.*/ d'' | sed ''/^/s*$/ d'' | sed ''s/^/git rm -r /'' | bash
Explicación:
- imprimir el archivo .gitignore
- eliminar todos los comentarios de la impresión
- borrar todas las líneas vacías
- agrega ''git rm -r'' al comienzo de la línea
- ejecutar cada linea
Puedes eliminarlos del repositorio manualmente:
git rm --cached file1 file2 dir/file3
O, si tienes muchos archivos:
git rm --cached `git ls-files -i --exclude-from=.gitignore`
Pero esto no parece funcionar en Git Bash en Windows. Produce un mensaje de error. Lo siguiente funciona mejor:
git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
En cuanto a reescribir todo el historial sin estos archivos, dudo mucho que haya una forma automática de hacerlo.
Y todos sabemos que reescribir la historia es mala, ¿no? :)
Una forma más fácil que funciona en cualquier sistema operativo es hacer
git rm -r --cached .
git add .
git commit -m "Removing all files in .gitignore"
Básicamente leíste todos los archivos, excepto los que están en el .gitignore