Cómo quitar local (sin marcar) los archivos de la actual Git árbol de trabajo?

StackOverflow https://stackoverflow.com/questions/61212

  •  09-06-2019
  •  | 
  •  

Pregunta

¿Cómo se puede borrar sin marcar archivos locales en su trabajo actual árbol?

¿Fue útil?

Solución

Como por el Git de Documentación git clean

Quitar sin marcar archivos desde el árbol de trabajo


El paso 1 es para mostrar lo que va a ser eliminado mediante el uso de la -n opción:

# Print out the list of files which will be removed (dry run)
git clean -n

Paso Limpio - cuidado:esto eliminará los archivos:

# Delete the files from the repository
git clean -f
  • Para eliminar directorios, ejecutar git clean -f -d o git clean -fd
  • Para eliminar archivos ignorados, ejecutar git clean -f -X o git clean -fX
  • Para quitar ignorado y no omite los archivos, ejecute git clean -f -x o git clean -fx

Nota el caso de la diferencia en la X para los dos últimos comandos.

Si clean.requireForce se establece en "true" (predeterminado) en la configuración, hay que especificar -f de lo contrario, nada de lo que pueda suceder.

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


Opciones

-f, --force

Si el Git variable de configuración limpia.requireForce no está establecido en falso, git clean se niegan a ejecutar a menos de que -f, -n o -i.

-x

No utilice el estándar de ignorar las reglas de lectura .gitignore (por directorio) y $GIT_DIR/info/exclude, pero todavía no usar el ignore reglas dadas con -e opciones.Esto permite la eliminación de todos los archivos sin seguimiento, incluyendo la construcción de los productos.Esto puede ser usado (posiblemente en conjunción con git reset) para crear una prístina directorio de trabajo a prueba limpio construir.

-X

Eliminar sólo los archivos ignorados por Git.Esto puede ser útil para reconstruir todo desde cero, pero mantener manualmente los archivos creados.

-n, -dry-run

En realidad no quitar nada, solo mostrar lo que se hace.

-d

Quitar sin recorrer los directorios además sin marcar archivos.Si un sin marcar directorio es administrado por un repositorio de Git, es no se eliminan de forma predeterminada.Uso -f opción dos veces si realmente quieres eliminar un directorio.

Otros consejos

Uso git clean -f -d para asegurarse de que directorios también se eliminan.

A continuación, puede comprobar si los archivos son realmente ido con git status.

Me sorprende que nadie ha mencionado esto antes:

git clean -i

Que significa interactivo y usted va a obtener una visión rápida de lo que va a ser eliminado, te ofrece la posibilidad de incluir/excluir los archivos afectados.En general, aún más rápido que la ejecución de la obligatoriedad de --dry-run antes de la limpieza real.

Usted tendrá que tirar en un -d si usted también desea tomar cuidado de carpetas vacías.Al final, se convierte en un bonito alias:

git iclean

Dicho esto, el exceso de mano de comandos interactivos puede ser agotador para los usuarios experimentados.En estos días acabo de uso de los ya mencionados git clean -fd

Si sin marcar directorio es un repositorio git de su propio (por ejemplo,submódulo), es necesario utilizar -f dos veces:

git clean -d -f -f

Forma sencilla de quitar sin marcar archivos

Para eliminar todos los archivos sin seguimiento, La simple forma es añadir todos ellos de primera y restablecimiento de la repo como a continuación

git add --all
git reset --hard HEAD

Me gusta git stash push -u porque se puede deshacer todos ellos con git stash pop.

EDITAR:También he encontrado una manera de mostrar sin marcar archivo en una carpeta (por ejemplo, git show stash@{0}^3) https://stackoverflow.com/a/12681856/338986

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

Esto es lo que yo siempre uso:

git clean -fdx

Para un proyecto muy grande es posible que desee ejecutar un par de veces.

git-limpia es lo que usted está buscando.Se utiliza para eliminar archivos sin seguimiento desde el árbol de trabajo.

Si es necesario quitar sin marcar los archivos del subdirectorio particular,

git clean -f {dir_path}

Y de manera combinada para eliminar sin recorrer directorios/archivos y archivos ignorados.

git clean -fxd {dir_path}

después de esto usted tendrá los archivos modificados sólo en git status.

git clean -fd elimina el directorio

git clean -fX elimina archivos ignorados

git clean -fx elimina ignorado y onu-archivos ignorados

se pueden utilizar todas las opciones anteriores en combinación como

git clean -fdXx

compruebe git manual para obtener más ayuda

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

Esto se pone en estado fresco clon.

git clean -ffdx

Eliminar todas las carpetas y archivos en este repo pero no su submódulos

git clean -fdx

Quitar sólo las carpetas adicionales, pero no los archivos (ex.crear carpeta)

git clean -fd

Eliminar carpetas adicionales + archivos ignorados (pero no cualquier recién agregado los archivos)

Si el archivo no fue ignorado y aún no facturado, a continuación, se mantenga.Nota la capital X.

git clean -fdX

Nuevo modo interactivo

git clean

OK, la eliminación de no deseados sin marcar archivos y carpetas son fáciles de usar git en la línea de comandos, simplemente lo hacen como este:

git clean -fd

Doble check antes de hacerlo como va a eliminar los archivos y carpetas sin hacer ningún tipo de historia...

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

Por lo tanto, si desea eliminar los archivos, puede usar -f sólo:

git clean -f

Si desea eliminar(directorios) y los archivos, sólo puede borrar sin recorrer los directorios y los archivos de este tipo:

git clean -fd

También, usted puede utilizar -x bandera para la inclusión de los archivos que son ignorados por git.Esto sería útil si desea eliminar todo.

Y la adición de -i bandera, hace git pidiendo permiso para borrar archivos uno por uno sobre la marcha.

Si usted no está seguro y quiere comprobar las cosas primero, agregar -n de la bandera.

Uso -q si usted no desea ver cualquier informe después de la eliminación con éxito.

Yo también crear la imagen de abajo para que sea más memorisable, especialmente he visto a muchas personas confunden -f para la limpieza de la carpeta a veces o mezcla de alguna forma!


deleting unwanted untracked files and folder

Una mejor manera es usar:git clean

git clean -d -x -f

Esto elimina archivos sin seguimiento, incluidos los directorios (-d) y los archivos ignorados por git (-x).

Además, reemplace el -f el argumento de la -n para realizar una dry-run o -i para el modo interactivo y él le dirá lo que va a ser eliminado.

El usuario enfoque interactivo:

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

-me interactivo
-f para forzar
-d para el directorio
-x para archivos ignorados(agregar si es necesario)

Nota: Agregar -n o --dry-run simplemente para verificar que es lo que va a hacer.

git clean -f -d -x $(git rev-parse --show-cdup) se aplica limpio al directorio raíz, no importa donde usted lo llama dentro de un repositorio de árbol de directorios.Yo lo uso todo el tiempo, ya que no te obligan a dejar la carpeta donde trabajo ahora, y permite limpiar & comprometerse a la derecha desde el lugar donde estás.

Asegúrese de que la marca -f, -d, -x se adapte a tus 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 disponibles, simplemente marque git clean --help.

Para mí sólo después de trabajado:

git clean -ffdx

En todos los demás casos, que estaba recibiendo un mensaje En "Saltar Directorio" para algunos subdirectorios.

Un lifehack para tal situación no inventado y probado (que funciona perfectamente):

git add .
git reset --hard HEAD

¡Cuidado! Asegúrese de cometer cualquier cambio que sea necesario (incluso en los archivos sin seguimiento) antes de realizar esta.

Si sólo desea eliminar los archivos que aparecen como sin marcar por "git status"

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

Yo prefiero esto a git 'limpia' porque 'git clean" se eliminarán los archivos de ignorado por git, por lo que su siguiente tendrá que reconstruir todo y usted puede perder su configuración IDE demasiado.

Para saber qué va a ser eliminado antes de la realidad, la eliminación:

git clean -d -n

Es la salida algo como:

Iba a quitar sample.txt

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

git clean -d -f

Es la salida algo como:

La eliminación de sample.txt

Para eliminar los archivos sin seguimiento debería utilizar el comando para ver los archivos que van a ser afectados por la limpieza de

git clean -fdn

Esto mostrará la lista de archivos que van a ser eliminados.Ahora para eliminar los archivos, use este comando:

git clean -fd

Tenga cuidado mientras se ejecuta git `limpia` de comandos.

Siempre uso -n antes de ejecutar el comando real como que le mostrará qué archivos se eliminan.

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

Por defecto, git clean sólo quitar sin marcar los archivos que no sean ignorados.Cualquier archivo que coincide con un patrón en su .gitignore u otros ignorar los archivos que no se pueden eliminar.Si desea quitar los archivos, puede añadir un -x para el comando limpiar.

git clean -f -d -x

También existe el modo interactivo disponible -i con el comando limpiar

git clean -x -i

Alternativamente

Si usted no está 100% seguro de que la eliminación de su comprometidos trabajo es seguro, usted podría utilizar en lugar de esconder

git stash --all

Es también claro que su directorio, pero te dan la flexibilidad para recuperar los archivos en cualquier punto en el tiempo mediante stash con aplicar o pop.A continuación, en el punto posterior podrías aclarar su alijo de usar:

git stash drop // or clean

Normal git clean comando no quitar sin marcar archivos con mi git version 2.9.0.windows.1.

$ git clean -fdx     # doesn't remove untracked files
$ git clean -fdx *   # Append star then it works!

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

He cubierto algunos de los fundamentos aquí en mi blog, git-intro-basic-comandos

libros sugeridos Comando para La eliminación de Archivos sin seguimiento de git docs es git clean

git clean - Quitar sin marcar archivos desde el árbol de trabajo

Método Sugerido: Interactivas del Modo mediante el uso de git clean -i de modo que podemos tener el control sobre él.vamos a ver resto de opciones disponibles.

Opciones Disponibles:

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

Explicación:

1. -d

Quitar sin recorrer los directorios además sin marcar archivos.Si un sin marcar directorio es administrado por un repositorio de Git, no se quita de forma predeterminada.Usar la opción-f dos veces si realmente desea eliminar un directorio.

2.-f, --force

Si el Git variable de configuración limpia.requireForce no se establece en false, git clean se niegan a ejecutar a menos de que -f, -n o -yo.

3.-i, --interactive

Mostrar lo que debería ser hecho y limpiar los archivos de forma interactiva.Consulte "modo Interactivo" para más detalles.

4.-n, --dry-run

En realidad no quitar nada, solo mostrar lo que se hace.

5.-q, --quiet

Tranquila, sólo informar de los errores, pero no los archivos que están eliminado con éxito.

6.-e , --exclude=

En adición a los que se encuentran en .gitignore (por directorio) y $GIT_DIR/info/excluir, también consideramos que estos patrones en la conjunto de ignorar las reglas en vigor.

7.-x

No utilice el estándar de ignorar las reglas de lectura .gitignore (por directorio) y $GIT_DIR/info/excluir, pero todavía no usar el ignore normas de con -e opciones.Esto permite la eliminación de todos los archivos sin seguimiento, incluyendo la construcción de los productos.Esto puede ser usado (posiblemente en junto con git reset) para crear una prístina directorio de trabajo a prueba una compilación limpia.

8.-X

Eliminar sólo los archivos ignorados por Git.Esto puede ser útil para reconstruir todo desde cero, pero mantener manualmente los archivos creados.

Nos puede quitar fácilmente local sin recorrer los archivos de la actual git árbol de trabajo mediante el uso de debajo de git comentarios.

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

Ejemplo:

git reset --hard HEAD

Enlaces :

  1. https://git-scm.com/docs/git-reset
  2. ¿Cómo puedo utilizar git reset --hard HEAD' para volver a una anterior cometer?
  3. Restablecer repositorio local de la sucursal a ser como repositorio remoto de la CABEZA
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html

Limpie el repositorio git y todos los submódulos de forma recursiva

El siguiente comando para limpiar el actual repositorio git y todos sus submódulos de forma recursiva:

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)

oh-my-zsh con zsh proporciona a los grandes alias a través del plugin de git.Pueden ser utilizados en bash así.

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

  • gclean elimina sin recorrer los directorios además de los archivos sin seguimiento.
  • gpristine el restablecimiento de la local de cambios, quitar sin recorrer, directorios, sin recorrer, archivos y no utilice el estándar de ignorar las reglas de lectura .gitignore (por directorio) y $GIT_DIR/info/excluir, pero todavía no utilizar el ignorar las normas de con -e opciones.Esto permite la eliminación de todos los archivos sin seguimiento, incluyendo la construcción de los productos.Esto puede ser usado (posiblemente junto con git reset) para crear una prístina directorio de trabajo a prueba una compilación limpia.
git clean -f

va a eliminar los archivos sin seguimiento de la actual git

git clean -fd

si desea quitar los archivos y directorios, esto sólo elimina sin recorrer los directorios y archivos

Nota:Primero navegue hasta el directorio de salida y la rama que desea limpiar.

-i el modo interactivo y él le dirá lo que va a ser eliminado y usted puede elegir una acción de la lista.

  1. Para limpiar los archivos sólo [Carpetas no aparecen y no se limpian]:$ git clean -i

  2. Para limpiar los archivos y carpetas: $ git clean -d -i

-d incluyendo directorios.


Si usted elige c a partir de la lista.Los archivos/carpetas serán eliminados que no están registrados y también se eliminarán los archivos/carpetas que usted desorden.*

Por ejemplo:Si usted reestructurar la carpeta en su control remoto y tire de los cambios en su equipo local.archivos/carpetas que se crean por los demás será inicialmente en los últimos carpeta y en la que se reestructura.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top