Tengo algunos archivos en mi repositorio que deben ignorarse, los agregué a .gitignore pero, por supuesto, no se eliminan de mi repositorio.
Entonces, mi pregunta es, ¿hay algún comando o script mágico que use filter-branch que pueda reescribir mi historial y eliminar todos estos archivos fácilmente? ¿O simplemente un comando que creará una confirmación que los eliminará?
Respuestas:
Puede eliminarlos del repositorio manualmente:
O, si tiene muchos archivos:
Pero esto no parece funcionar en Git Bash en Windows. Produce un mensaje de error. Lo siguiente funciona mejor:
Con respecto a reescribir toda la historia sin estos archivos, dudo mucho que haya una forma automática de hacerlo.
Y todos sabemos que reescribir la historia es malo, ¿no? :)
fuente
git ls-files -i -z --exclude-from=.gitignore | xargs -0 git rm --cached
parece hacer el trucogit ls-files -i --exclude-from=.gitignore | %{git rm --cached $_}
Una forma más fácil que funciona en cualquier sistema operativo es hacerlo
Básicamente, leyó todos los archivos, excepto los que están en .gitignore
fuente
Como los archivos en .gitignore no están siendo rastreados, puede usar el comando git clean para eliminar de forma recursiva los archivos que no están bajo control de versiones.
Úselo
git clean -xdn
para realizar una ejecución en seco y ver qué se eliminará.Luego use
git clean -xdf
para ejecutarlo.Básicamente,
git clean -h
oman git-clean
(en Unix) te dará ayuda.Tenga en cuenta que este comando también eliminará los archivos nuevos que no están en el área de ensayo.
Espero eso ayude.
fuente
.gitignore
están siendo rastreados.git clean -xdn
es un ensayo que no se borrará. el próximo lo hará.Hice una solución muy directa 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:
fuente
sed
es sencillo?En Linux puedes usar este comando:
Por ejemplo, quiero eliminar "* .py ~", por lo que mi comando debería ser ==>
find . -name "*.py~" -exec rm -f {} \;
fuente
El git ignorará los archivos que coinciden con el patrón .gitignore después de agregarlo a .gitignore.
Pero los archivos que ya existían en el repositorio seguirán en.
use
git rm files_ignored; git commit -m 'rm no use files'
para eliminar archivos ignorados.fuente