2011-11-20 30 views
91

Estoy trabajando en una rama, digamos rama "experimental" que ramifico desde mi rama principal. Luego, genero un modelo de usuario en una rama experimental, pero todavía no lo agrego al índice.cómo eliminar archivos sin seguimiento en Git?

¿Qué debo hacer si deseo descartar todos los cambios de los archivos agregados recientemente en mi rama experimental? Los archivos sin seguimiento se enumeran a continuación:

$ git status 
On branch new_chick 
Untracked files: 
    (use "git add <file>..." to include in what will be committed) 

     .project 
     app/models/user.rb 
     db/migrate/ 
     test/fixtures/users.yml 
     test/unit/user_test.rb 

Traté de correr "reset --hard git" en la esperanza de deshacer todos los cambios, pero todos los archivos anteriores muestran todavía.

¿Alguien por favor arroja algo de luz sobre mí?

+1

Posible duplicado de [¿Cómo eliminar archivos locales (sin seguimiento) del árbol de trabajo actual de Git?] (Https://stackoverflow.com/questions/61212/how-to -remove-local-untracked-files-from-the-current-git-working-tree) – g00glen00b

Respuesta

183

para eliminar archivos sin seguimiento/directorios hacen:

git clean -fdx 

-f - Fuerza

-d - directorios demasiado

-x - eliminar archivos ignorados también (no utilice esto si no desea eliminar los archivos ignorados)

+40

Agrega -n para previsualizar primero para que no elimines accidentalmente cosas – Druska

+6

¡Esto es genial! Excepto que también eliminará los archivos de configuración que podría haber ignorado intencionalmente en .gitignore pero que aún necesita para su entorno de desarrollo local. Puede usar el mismo comando con el extra -i para el modo interactivo como tal: git clean -fdxi y le pedirá los archivos que desea eliminar. – moeabdol

+1

este comando podría eliminar los archivos deseados – thedanotto

14

Esos son archivos sin seguimiento. Esto significa que git no los está siguiendo. Solo los está enumerando porque no están en el archivo de ignorar git. Dado que no están siendo rastreados por git, git reset no los tocará.

Si quiere borrar todos los archivos sin seguir, la forma más simple es git clean -f (use git clean -n en su lugar si quiere ver lo que destruiría sin eliminar nada). De lo contrario, puede simplemente eliminar los archivos que no quiere a mano.

11

Enfoque de acceso 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
interactiva -f para la fuerza
-d para el directorio
-x para ficheros ignorados (añadir, si es necesario)

Nota:Añadir -n o--dry-run para comprobar lo que hará.

+1

esta es una mejor respuesta. +1 para -i –

0

Para borrar archivos sin seguimiento:

git clean -f

Para eliminar directorios sin seguimiento, así, su uso:

git clean -f -d

Para prevenir cualquier paro cardiaco, utilice

git clean -n -f -d

1

El comando para su rescate es git clean.

0

Bueno, tuve el problema similar.Lo había tomado más reciente, pero hubo algunos cambios en el local debido a que la fusión no estaba sucediendo en un archivo en particular. El archivo fue sin seguimiento y yo no quería que por lo Lo que hice fue -

$ git checkout ruta de archivo/nombre de archivo

ruta de archivo - La ubicación desde donde hice la fiesta git. luego cuando tomé la última vez que los cambios estaban disponibles

Cuestiones relacionadas