¿Eliminar archivos que no son del repositorio con git?

97

Estoy escribiendo código de Autotools y en el proceso de desarrollo, se generan toneladas de archivos.

¿Hay alguna forma de decirle a git que elimine todos los archivos de un directorio que no forman parte del repositorio?

Scott
fuente

Respuestas:

178

Puedes usar git-clean . Este comando eliminará los archivos / directorios sin seguimiento. De forma predeterminada, solo imprimirá lo que hubiera eliminado, sin eliminarlo realmente.

Dada la -fbandera para eliminar los archivos y la -dbandera para eliminar también los directorios vacíos:

git clean -df

También eliminando archivos ignorados:

git clean -dfx
Lily Ballard
fuente
36
Agregue un -xy todo es tan bueno como un repositorio recién clonado.
Dustin
2
Pensé que se refería a eliminar archivos de git, no del sistema de archivos real, ¡Ups!
Andrew Marshall
El comando git cleanpor sí solo eliminará todos los archivos sin seguimiento, excepto cuando la variable de configuración de Git clean.requireForce esté establecida en true. Si se establece en falso, entonces se necesita -ff para limpiar directorios
Adam
6
Las versiones recientes de git producirán errores sin ningún parámetro; requireForce tiene el valor predeterminado verdadero, por lo que para hacer un dryrun necesitas -n
Seb
1
siguiendo a @Dustin: git clean -ixle mostrará lo que limpiará y le dará un menú de opciones. Mi favorito.
wcochran