Cómo quitar local (sin marcar) los archivos de la actual Git árbol de trabajo?
-
09-06-2019 - |
Pregunta
¿Cómo se puede borrar sin marcar archivos locales en su trabajo actual árbol?
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
ogit clean -fd
- Para eliminar archivos ignorados, ejecutar
git clean -f -X
ogit clean -fX
- Para quitar ignorado y no omite los archivos, ejecute
git clean -f -x
ogit 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!
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 :
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.
Para limpiar los archivos sólo [Carpetas no aparecen y no se limpian]:
$ git clean -i
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.