¿Cómo eliminar archivos locales (no rastreados) del árbol de trabajo de Git actual?

¿Cómo eliminar archivos locales innecesarios del árbol de trabajo actual?

6113
14 сент. Readonly set 14 sep. 2008-09-14 12:06 '08 a las 12:06 pm 2008-09-14 12:06
@ 36 respuestas
  • 1
  • 2

Según la documentación de git clean.

Eliminar archivos innecesarios del árbol de trabajo


Paso 1: muestra lo que se eliminará con el parámetro -n :

 git clean -n 

Paso de limpieza - Cuidado: esto borrará los archivos :

 git clean -f 
  • Para eliminar directorios, ejecute git clean -f -d o git clean -fd
  • Para eliminar los archivos ignorados, ejecute git clean -f -X o git clean -fX
  • Para eliminar los archivos ignorados y no ignorados, ejecute git clean -f -X o git clean -fX

Note la diferencia en los eventos en X para los dos últimos equipos.

Si clean.requireForce establece en "verdadero" (el valor predeterminado) en su configuración, debe especificar -f , de lo contrario no pasará nada.

Ver la documentación de git-clean nuevo para obtener más información.

Funciones

-f

- fuerza

Si la variable de configuración Git clean.requireForce no se establece en false, Git clean se negará a iniciarse a menos que se especifique -f, -n o -i.

-x

No use las reglas de ignorar estándar que se leen desde .gitignore (para cada directorio) y $ GIT_DIR / info / exclude, pero siga usando las reglas de ignorar especificadas con las opciones -e. Esto le permite eliminar todos los archivos sin procesar, incluido el ensamblaje de productos. Se puede usar (posiblemente junto con Git reset) para crear un directorio de trabajo intacto para verificar una compilación limpia.

-X

Borrar solo los archivos ignorados por Git. Esto puede ser útil para recuperar todo desde cero, pero guardar archivos creados manualmente.

-n

- seco

De hecho, no borres nada, solo muestra lo que se hará.

-d

Eliminar directorios innecesarios, además de los archivos en bruto. Si un directorio sin firmar es administrado por otro repositorio Git, no se elimina de forma predeterminada. Utilice la opción -f dos veces si realmente desea eliminar dicho directorio.

7973
15 сент. Respuesta de Andreas Ericsson el 15 de septiembre. 2008-09-15 20:32 '08 a las 8:32 pm 2008-09-15 20:32

Use git clean -f -d para asegurarse de que los directorios también se eliminen.

border=0

Luego puedes verificar si tus archivos realmente han pasado por el git status .

866
26 мая '09 в 23:59 2009-05-26 23:59 la respuesta la da robert.berger el 26 de mayo de 2009 a las 23:59 2009-05-26 23:59

Me sorprende que nadie haya mencionado esto antes:

 git clean -i 

Esto significa interactividad, y obtiene una breve descripción de lo que se eliminará, ofreciéndole la opción de incluir / excluir archivos afectados. En general, aún es más rápido que ejecutar el --dry-run obligatorio antes de la limpieza real.

Tendrá que lanzar -d si también quiere ocuparse de las carpetas vacías. Al final, hace un buen seudónimo:

 git iclean 

Por lo tanto, la implementación manual adicional de comandos interactivos puede cansar a los usuarios avanzados. Estos días acabo de usar el ya mencionado git clean -fd

427
30 дек. La respuesta la da SystematicFrank el 30 de diciembre. 2013-12-30 23:12 '14 a las 11:12 2013-12-30 23:12
388
14 сент. La respuesta la da Fire Lancer el 14 de septiembre. 2008-09-14 12:09 '08 a las 12:09 2008-09-14 12:09

Si el directorio sin seguimiento es su propio repositorio git (por ejemplo, un submódulo), necesita usar -f dos veces:

git clean -d -f -f

213
25 янв. Respuesta dada por Michał Szajbe el 25 de enero. 2013-01-25 15:24 '13 a las 15:24 2013-01-25 15:24

Una forma sencilla de eliminar archivos sin seguimiento

Para eliminar todos los archivos sin seguimiento, la forma más fácil es agregarlos todos primero y restablecer el repositorio, como se muestra a continuación.

 git add --all git reset --hard HEAD 

156
03 июня '16 в 15:16 2016-06-03 15:16 La respuesta es dada por Thanga el 3 de junio de 2016 a las 15:16 2016-06-03 15:16

Me gusta git stash push -u porque puedes cancelarlos todos con git stash pop .

EDITAR: También encontré una manera de mostrar un archivo no rastreable en el caché (por ejemplo, git show stash@{0}^3 ) delphi-faq.net.site/questions/507 / ...

EDIT2: git stash save está en desuso en lugar de push . Gracias @ script lobo.

121
11 янв. Hiroshi respondió el 11 de enero. 2014-01-11 03:41 '14 a las 3:41 2014-01-11 03:41

Esto es lo que siempre uso:

 git clean -fdx 

Para un proyecto muy grande, puedes ejecutarlo varias veces.

98
25 нояб. La respuesta la da Oscar Fraxedas el 25 de noviembre. 2013-11-25 17:16 '13 a las 17:16 2013-11-25 17:16

git-clean es lo que estás buscando. Se utiliza para eliminar archivos sin procesar del árbol de trabajo.

83
14 сент. La respuesta se da Espo 14 Sep. 2008-09-14 12:08 '08 a las 12:08 2008-09-14 12:08

Si desea eliminar archivos sin firmar de un subdirectorio específico,

 git clean -f {dir_path} 

Y una forma combinada de eliminar archivos / archivos no reproducibles y archivos ignorados.

 git clean -fxd {dir_path} 

después de eso solo modificarás los archivos en git status .

73
24 сент. La respuesta se da Vijay C 24 sep. 2013-09-24 09:28 '13 a las 9:28 2013-09-24 09:28

git clean -fd borra el directorio

git clean -fX elimina los archivos ignorados

git clean -fX elimina los git clean -fX ignorados y no ignorados

Puede utilizar todas las opciones anteriores en combinación como

git clean -fdXx

Revisa el manual de Git para más ayuda.

48
22 янв. La respuesta se da Pooja 22 de enero. 2015-01-22 09:33 '15 a las 9:33 2015-01-22 09:33

Eliminar todas las carpetas y archivos innecesarios en este repositorio + submódulos

Esto te lleva al mismo estado que un clon nuevo.

 git clean -ffdx 

Elimine todas las carpetas y archivos adicionales en este repositorio, pero no sus submódulos.

 git clean -fdx 

Eliminar solo carpetas adicionales, pero no archivos (por ejemplo, la carpeta de compilación)

 git clean -fd 

Eliminar carpetas innecesarias + archivos faltantes (pero no archivos nuevos)

Si el archivo no se ha ignorado y aún no se ha registrado, permanece. Tenga en cuenta la capital X.

 git clean -fdX 

Nuevo modo interactivo

 git clean 
37
12 февр. Shital Shah da la respuesta el 12 de febrero. 2017-02-12 11:33 '17 a las 11:33 2017-02-12 11:33

De acuerdo, eliminar archivos y carpetas innecesarios sin seguimiento es fácil, usando git en la línea de comandos, solo hazlo así:

 git clean -fd 

Verifique dos veces antes de hacer esto, ya que eliminará archivos y carpetas sin hacer un historial ...

También en este caso -f significa fuerza, y -d significa directorio ...

Por lo tanto, si desea eliminar solo archivos, solo puede usar -f :

 git clean -f 

Si desea eliminar (directorios) y archivos, puede eliminar solo directorios y archivos no monitoreados, por ejemplo:

 git clean -fd 

También puede usar el indicador -x para incluir archivos que son ignorados por git. Esto sería útil si quieres borrar todo.

Y agregar el indicador -i hace que git solicite permiso para eliminar archivos uno por uno sobre la marcha.

Si no está seguro y desea verificar todo primero, agregue la -n .

Utilice -q si no desea ver ningún informe después de una eliminación exitosa.

También creo una imagen a continuación para hacerla más memorable, ¡especialmente he visto cuántas personas confunden -f con limpiar una carpeta o de alguna manera confundirla!


2019

20 июля '17 в 19:42 2017-07-20 19:42 La respuesta es dada por Alireza el 20 de julio de 2017 a las 19:42 2017-07-20 19:42

Mejor usado: git clean

 git clean -d -x -f 

Esto elimina los archivos innecesarios, incluidos los directorios (-d) y los archivos que git (-x) ignora.

También reemplace el argumento -f con -n para ejecutar el modo interactivo de dry-run o -i , y le indicará qué se eliminará.

32
16 апр. La respuesta se da Chhabilal 16 de abril. 2015-04-16 09:49 '15 a las 9:49 2015-04-16 09:49

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/arsdumpgenerator/inspector/ [y/N]? y Remove src/com/arsdumpgenerator/manifest/ [y/N]? y Remove src/com/arsdumpgenerator/s3/ [y/N]? y Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y Remove tst/com/arsdumpgenerator/s3/ [y/N]? y 

-i para interactivo
-f por fuerza
-d para directorio
-x para archivos ignorados (agregar si es necesario)

Nota: agregue -n -seque para verificar lo que hará.

20
02 марта '17 в 23:09 2017-03-02 23:09 la respuesta se da bit_cracker007 02 de marzo de 2017 a las 23:09 2017-03-02 23:09

Para mí, sólo después del trabajo:

 git clean -ffdx 

En todos los demás casos, recibí el mensaje "Directorio de omisión" para algunos subdirectorios.

15
16 авг. la respuesta se da rahul286 16 ago. 2016-08-16 18:29 '16 a las 6:29 pm 2016-08-16 18:29

git clean -f -d -x $(git rev-parse --show-cdup) se usa exclusivamente para el directorio raíz, sin importar dónde lo llame en el árbol de directorios del repositorio. Lo uso todo el tiempo, ya que no le obliga a abandonar la carpeta en la que está trabajando actualmente, y le permite limpiar y corregir el derecho desde el lugar donde se encuentra.

Asegúrese de que las -f , -d , -x coincidan con sus necesidades:

 -d Remove untracked directories in addition to untracked files. If an untracked directory is managed by a different Git repository, it is not removed by default. Use -f option twice if you really want to remove such a directory. -f, --force If the Git configuration variable clean.requireForce is not set to false, git clean will refuse to delete files or directories unless given -f, -n or -i. Git will refuse to delete directories with .git sub directory or file unless a second -f is given. This affects also git submodules where the storage area of the removed submodule under .git/modules/ is not removed until -f is given twice. -x Don't use the standard ignore rules read from .gitignore (per directory) and $GIT_DIR/info/exclude, but do still use the ignore rules given with -e options. This allows removing all untracked files, including build products. This can be used (possibly in conjunction with git reset) to create a pristine working directory to test a clean build. 

Hay otras banderas, solo elige git clean --help .

15
02 дек. La respuesta es de Nikita Leonov 02 dic. 2015-12-02 20:57 '15 a las 20:57 2015-12-02 20:57

Si solo desea eliminar los archivos enumerados como no verificados por 'git status'

 git stash save -u git stash drop "stash@{0}" 

Prefiero este "git clean", porque "git clean" eliminará los archivos ignorados por git, por lo que tu próxima compilación tendrá que reconstruir todo y también puedes perder la configuración del IDE.

13
02 марта '16 в 5:09 2016-03-02 05:09 la respuesta se da jazzdev 02 de marzo de 2016 a las 5:09 2016-03-02 05:09

Viabilidad para tal situación que acabo de inventar y probar (que funciona muy bien):

 git add . git reset --hard HEAD 
Precaución Asegúrese de copiar los cambios necesarios (incluso en archivos poco sinceros) antes de hacer esto .
13
21 февр. La respuesta se da a Thybzi el 21 de febrero. 2016-02-21 20:29 '16 a las 8:29 pm 2016-02-21 20:29

Para averiguar qué se eliminará antes de la eliminación real:

git clean -d -n

Saldrá algo como:

Elimina sample.txt

Para eliminar todo lo que aparece en la salida del comando anterior:

git clean -d -f

Saldrá algo como:

Desinstalar sample.txt

10
16 февр. La respuesta la da Omar Mowafi el 16 de febrero. 2016-02-16 11:42 '16 a las 11:42 2016-02-16 11:42

Para eliminar los archivos no utilizados, primero debe usar el comando para ver los archivos que se verán afectados por la limpieza.

 git clean -fdn 

Esto le mostrará la lista de archivos a eliminar. Ahora, para eliminar realmente estos archivos, use el siguiente comando:

 git clean -fd 
8
25 окт. Respuesta dada por Gaurav el 25 de octubre. 2016-10-25 12:09 '16 a las 12:09 pm 2016-10-25 12:09

Alguien debería mencionar realmente:

 git clean [<options>] 

Tengo razón

7
27 авг. respuesta dada por joeytwiddle 27 ago. 2015-08-27 13:18 '15 a la 1:18 pm 2015-08-27 13:18

Tenga cuidado al ejecutar el comando `git clean`.

Siempre use -n antes de ejecutar el comando real, que muestra qué archivos se eliminarán.

 git clean -n -d git clean -f -d 

De forma predeterminada, git clean solo eliminará los archivos no utilizados que no se ignoran. No se eliminará ningún archivo que coincida con el patrón en su .gitignore u otros archivos ignorados. Si también desea eliminar estos archivos, puede agregar el comando -x a un comando de limpieza.

 git clean -f -d -x 

También hay un modo interactivo con un comando limpio.

 git clean -x -i 

Alternativamente

Si no está 100% seguro de que la eliminación de su trabajo no terminado es segura, puede utilizar el almacenamiento de datos en su lugar.

 git stash --all 

También borrará su directorio, pero le dará la flexibilidad de extraer archivos en cualquier momento mediante el uso de stash con apply o pop . Luego, en un momento posterior, puede borrar su caché usando:

 git stash drop // or clean 
6
22 окт. Responder DevWL 22 de octubre. 2017-10-22 00:44 '17 a las 0:44 2017-10-22 00:44

git clean -f to remove untracked files from working directory.

Cubrí algunos de los conceptos básicos aquí en mi blog, git-intro-basic-command

5
16 февр. la respuesta se da ysk 16 feb . 2017-02-16 12:05 '17 a las 12:05 2017-02-16 12:05

Podemos eliminar fácilmente los archivos locales sin seguimiento del árbol de trabajo de git actual utilizando los comentarios de git a continuación.

 git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>] 

Ejemplo:

 git reset --hard HEAD 

Referencias:

  1. https://git-scm.com/docs/git-reset
  2. ¿Cómo uso 'git reset --hard HEAD' para volver a la confirmación anterior?
  3. Restablezca la rama del repositorio local para que se vea como el repositorio remoto HEAD
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html
5

Comando ued Eliminar archivos en bruto de git docs git clean

git clean - elimina archivos rotos del árbol de trabajo

Método sugerido: Modo de interacción con git clean -i para que podamos controlarlo. mira las opciones disponibles restantes.

Opciones disponibles:

 git clean -d -f -i -n -q -e -x -X (can use either) 

Explicación:

1. -d

Eliminar directorios innecesarios, además de los archivos en bruto. Si un directorio sin firma es administrado por otro repositorio git, no se elimina de forma predeterminada. Utilice la opción -f dos veces si realmente desea eliminar dicho directorio.

2. -f, --force

Si la variable de configuración git clean.requireForce no se establece en false, git clean se negará a iniciarse a menos que se especifique -f, -n o -i.

3. -i, --interactivo

Muestra lo que se hará y borra los archivos en línea. Para más detalles, consulte "Modo interactivo".

4. -n, --dry-run

De hecho, no borres nada, solo muestra lo que se hará.

5. -q, --quiet

Mantén la calma, solo informa errores, pero no borres archivos.

6. -e, --exclude =

Además de los que se encuentran en .gitignore (para cada directorio) y $ GIT_DIR / info / exclude, también considere estos patrones en el conjunto de reglas de ignorar válidas.

7. -x

No use las reglas de ignorar estándar que se leen desde .gitignore (para cada directorio) y $ GIT_DIR / info / exclude, pero siga usando las reglas de ignorar especificadas con las opciones -e. Esto le permite eliminar todos los archivos sin procesar, incluido el ensamblaje de productos. Esto se puede usar (posiblemente junto con git reset) para crear un directorio de trabajo intacto para verificar una compilación limpia.

8. -X

Borrar solo los archivos ignorados por Git. Esto puede ser útil para recuperar todo desde cero, pero guardar archivos creados manualmente.

01 сент. Respuesta dada por Mohideen ibn Mohammed el 1 de septiembre. 2017-09-01 09:23 '17 a las 9:23 am 2017-09-01 09:23

El comando habitual de git clean no elimina los archivos no utilizados con git version 2.9.0.windows.1 .

 $ git clean -fdx # doesn't remove untracked files $ git clean -fdx * # Append star then it works! 
5
11 окт. La respuesta se da kujiy 11 oct. 2016-10-11 03:14 '16 a las 3:14 2016-10-11 03:14

Borrar el repositorio git y todos los submódulos recursivamente

El siguiente comando borra recursivamente el repositorio de git actual y todos sus submódulos:

 (git clean -d -x -f  git submodule foreach --recursive git clean -d -x -f) 
3
25 сент. La respuesta se da Sergey 25 sep. 2017-09-25 19:25 '17 a las 7:25 pm 2017-09-25 19:25

oh-my-zsh con zsh proporciona estos excelentes alias a través del complemento git. También se pueden utilizar en bash.

gclean='git clean -fd'
gpristine='git reset --hard git clean -dfx'

  • gclean elimina los directorios que no se gclean rastrear, además de los archivos sin seguimiento.
  • gpristine descarta los cambios locales, elimina los directorios sin seguimiento, los archivos sin seguimiento y no utiliza las reglas de ignorar estándar que se leen desde .gitignore (para cada directorio) y $ GIT_DIR / info / exclude, pero aún así utiliza las reglas de ignorar establecidas con la opción -e. Esto le permite eliminar todos los archivos sin seguimiento, incluidos los productos de compilación. Se puede usar (posiblemente en combinación con git reset) para crear el directorio de trabajo principal para probar una construcción limpia.
3
02 нояб. La respuesta se da ZenLulz 02 Nov. 2017-11-02 11:24 '17 a las 11:24 2017-11-02 11:24
 git clean -f 

eliminará archivos sin seguimiento de git actual

 git clean -fd 

cuando desee eliminar directorios y archivos, solo eliminará directorios y archivos sin seguimiento.

1
18 мая '18 в 9:04 2018-05-18 09:04 la respuesta la da sudhir Vishwakarma el 18 de mayo de 18 a las 9:04 2018-05-18 09:04
  • 1
  • 2

Otras preguntas sobre o Haz una pregunta