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 --cachedparece 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 -xdnpara realizar una ejecución en seco y ver qué se eliminará.Luego use
git clean -xdfpara ejecutarlo.Básicamente,
git clean -homan 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
.gitignoreestán siendo rastreados.git clean -xdnes 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 /' | bashExplicación:
fuente
sedes 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