Git: ¿Cómo eliminar todos los archivos no rastreados?

40

Estoy usando Git para el control de versiones. Ahora quiero eliminar en mi máquina local todos los archivos en el repositorio que no se rastrean.

Puedo usar

git status

para enumerar estos archivos, pero ¿cómo puedo eliminarlos todos?

RoflcoptrException
fuente
1
¿No puede verificar todos los archivos en un lugar diferente de su máquina y luego eliminar la versión anterior?
Nifle
1
Seguro que puedo, pero ¿no hay una manera más simple?
RoflcoptrException

Respuestas:

55

Si lo ignoras, úsalo git clean -xf. Puede hacerlo, git clean -dfpero eso también eliminará los directorios no rastreados. Úselo -npara una carrera en seco.

Ver limpieza sin seguimiento

cortina de hielo
fuente
3
-x ignora los ignora ..
UpAndAdam
8
-xfeliminará y los archivos ignorados y esto probablemente NO sea lo que desea. Use -nfy proceda con cuidado. Ver: stackoverflow.com/questions/61212/…
Mr_and_Mrs_D
2
Recuerde, esto puede eliminar sus carpetas de entorno / IDE (por ejemplo .vagrant o .idea (phpstorm))
timhc22
1
¡CUIDADO! los archivos ignorados se eliminarán para siempre. -100
Sepehr
5
git clean -f
Gravedad
fuente
8
Puede tener sentido agregar el significado de ese comando para hacer que esta respuesta sea autónoma.
NN
5

Enfoque interactivo del usuario:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y

-i para interactivo
-f para archivo
-d para directorio

Nota: Agregue -n o --dry-run para verificar lo que hará.

bit_cracker007
fuente
3

Hay una sutileza que vale la pena mencionar acerca de los git clean -farchivos y directorios no rastreados. Si tiene un directorio sin seguimiento que contiene archivos que, a fortiori, no tienen seguimiento, git clean -fNO eliminará esos archivos sin seguimiento.

En otras palabras, NO siempre es el caso que git clean -feliminará todos los archivos no rastreados. Una mejor explicación git clean -fes que elimina todos los archivos no rastreados que no están en directorios no rastreados.

git clean -f -d debe usarse para eliminar archivos sin seguimiento que están en directorios sin seguimiento y parece que no hay forma de eliminar todos los archivos sin seguimiento sin eliminar también los directorios sin seguimiento que solo contienen archivos sin seguimiento.

Úselo git clean -f -d -npara VER REALMENTE lo que desea hacer para restaurar su directorio de trabajo a lo que sería sin ningún archivo sin seguimiento. Entonces usa git clean -f -dpara hacer eso.

Dennis G Allard
fuente