¿Cómo se eliminan los archivos locales no rastreados de su árbol de trabajo actual?
fuente
¿Cómo se eliminan los archivos locales no rastreados de su árbol de trabajo actual?
git-clean - Elimina archivos no rastreados del árbol de trabajo
Sinopsis
git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…
Descripción
Limpia el árbol de trabajo eliminando de forma recursiva los archivos que no están bajo control de versiones, comenzando desde el directorio actual .
Normalmente, solo se eliminan los archivos desconocidos para Git, pero si
-x
se especifica la opción, también se eliminan los archivos ignorados. Esto puede, por ejemplo, ser útil para eliminar todos los productos de compilación.Si
<path>...
se dan argumentos opcionales , solo esas rutas se ven afectadas.
El paso 1 es mostrar lo que se eliminará utilizando la -n
opción:
# Print out the list of files which will be removed (dry run)
git clean -n
Paso limpio - cuidado: esto eliminará archivos :
# Delete the files from the repository
git clean -f
git clean -f -d
ogit clean -fd
git clean -f -X
ogit clean -fX
git clean -f -x
ogit clean -fx
Tenga en cuenta la diferencia de casos en elX
los dos últimos comandos.
Si clean.requireForce
se establece en "verdadero" (el valor predeterminado) en su configuración, es necesario especificarlo; de lo -f
contrario, no pasará nada.
Nuevamente vea los git-clean
documentos para más información.
Opciones
-f
,--force
Si la variable de configuración de Git clean.requireForce no está establecida en false, git clean se negará a ejecutarse a menos que se indique
-f
,-n
o-i
.
-x
No use las reglas de ignorar estándar leídas de .gitignore (por directorio) y
$GIT_DIR/info/exclude
, pero aún use las reglas de ignorar dadas con-e
opciones. Esto permite eliminar todos los archivos sin seguimiento, incluidos los productos de compilación. Esto se puede usar (posiblemente junto con git reset) para crear un directorio de trabajo prístino para probar una compilación limpia.
-X
Eliminar solo los archivos ignorados por Git. Esto puede ser útil para reconstruir todo desde cero, pero mantener archivos creados manualmente.
-n
,--dry-run
En realidad, no elimine nada, solo muestre lo que se haría.
-d
Elimine los directorios sin seguimiento además de los archivos sin seguimiento. Si un directorio no rastreado es administrado por un repositorio Git diferente, no se elimina de manera predeterminada. Use la
-f
opción dos veces si realmente desea eliminar dicho directorio.
git clean -f
funciona solo en el directorio donde se llama (y subdirectorios). Si desea limpiar toda la copia de trabajo, debe llamarla en su directorio raíz.
git clean -f :/
funciona como si lo hubiera ejecutado en el directorio raíz de repositorio. Ver también respuestas posteriores que también representan submódulos congit clean -ffxd :/
Use git clean -f -d
para asegurarse de que los directorios también se eliminen.
En realidad, no elimine nada, solo muestre lo que se haría.
git clean -n
o
git clean --dry-run
Elimine los directorios sin seguimiento además de los archivos sin seguimiento. Si un directorio no rastreado es administrado por un repositorio Git diferente, no se elimina de manera predeterminada. Use la -f
opción dos veces si realmente desea eliminar dicho directorio.
git clean -fd
Luego puede verificar si sus archivos realmente se han ido git status
.
git clean -n -d
git clean -nd
y git clean -fd
.
Me sorprende que nadie haya mencionado esto antes:
git clean -i
Eso significa interactivo y obtendrá una visión general rápida de lo que se va a eliminar, ofreciéndole la posibilidad de incluir / excluir los archivos afectados. En general, aún más rápido que ejecutar el obligatorio--dry-run
antes de la limpieza real.
Tendrá que agregar un -d
si también desea cuidar las carpetas vacías. Al final, es un buen alias:
git iclean
Dicho esto, el uso adicional de la mano de los comandos interactivos puede ser agotador para los usuarios experimentados. En estos días solo uso el ya mencionadogit clean -fd
git clean -i
solo funciona si se llama desde la raíz de la copia de trabajo?
Si el directorio sin seguimiento es un repositorio de git propio (por ejemplo, submódulo), debe usar -f
dos veces:
git clean -d -f -f
Para eliminar todos los archivos no rastreados, la forma más sencilla es agregarlos todos primero y restablecer el repositorio como se muestra a continuación
git add --all
git reset --hard HEAD
git add --all
por git add .
. Por lo tanto, puede hacerlo de manera más corta en línea git add . && git reset --hard HEAD
(tenga mucho cuidado con este comando) .
git clean
?
git clean
aparentemente también elimina todo lo que se ignora. Simplemente eliminó mi node_modules
carpeta. Hacer esto primero organizaría todos los archivos, excepto los ignorados, y luego los eliminaría haciendo un reinicio. Los archivos ignorados no serán tocados.
git clean -n
todos modos antes de hacer la eliminación real (o uso git clean -i
).
git clean
elimina los archivos ignorados solo si usa la opción -x
o -X
, de lo contrario, solo elimina los archivos no rastreados.
Me gusta git stash push -u
porque puedes deshacerlos todos git stash pop
.
EDITAR: También encontré una manera de mostrar el archivo sin seguimiento en un alijo (por ejemplo git show stash@{0}^3
) https://stackoverflow.com/a/12681856/338986
EDIT2: git stash save
está en desuso a favor de push
. Gracias @ script-wolf.
-u
es equivalente a --include-untracked
. Puedes encontrar ayuda con git help stash
.
save
opción fue desaprobada a favor de push
, que hace lo mismo pero más. Puede leer más aquí, /programming/44680028/whats-the-difference-between-git-stash-save-and-git-stash-push/44681952
Esto es lo que siempre uso:
git clean -fdx
Para un proyecto muy grande, es posible que desee ejecutarlo un par de veces.
Si es necesario para eliminar archivos no rastreados de un subdirectorio particular,
git clean -f {dir_path}
Y forma combinada de eliminar directorios / archivos sin seguimiento y archivos ignorados.
git clean -fxd {dir_path}
después de esto, solo habrá modificado los archivos en git status
.
Elimine todas las carpetas y archivos adicionales en este repositorio + submódulos
Esto te pone en el mismo estado que el clon nuevo.
git clean -ffdx
Elimine todas las carpetas y archivos adicionales en este repositorio pero no sus submódulos
git clean -fdx
Elimine carpetas adicionales pero no archivos (por ejemplo, compilación o carpeta de registros)
git clean -fd
Eliminar carpetas adicionales + archivos ignorados (pero no archivos recién agregados)
Si el archivo no se ignoró y aún no se registró, entonces permanece. Tenga en cuenta la X mayúscula.
git clean -fdX
Nuevo modo interactivo
git clean
git clean -fd
elimina el directorio
git clean -fX
elimina archivos ignorados
git clean -fx
elimina archivos ignorados y no ignorados
se pueden usar todas las opciones anteriores en combinación como
git clean -fdXx
consulte el manual de git para obtener más ayuda
git clean -fdXx
produce el mensaje de error "fatal: -x y -X no se pueden usar juntos" (usando git-2.8). Para su última oración dentro de su respuesta, proporcione un enlace al manual de git. Saludos
OK, eliminar archivos y carpetas no rastreados no deseados es fácil de usar git
en la línea de comandos, simplemente hazlo así:
git clean -fd
Verifique dos veces antes de hacerlo, ya que eliminará los archivos y carpetas sin hacer ningún historial ...
También en este caso, -f
significa fuerza y-d
significa directorio ...
Por lo tanto, si solo desea eliminar archivos, solo puede usar -f
:
git clean -f
Si desea eliminar (directorios) y archivos, puede eliminar solo directorios y archivos sin seguimiento como este:
git clean -fd
Además, puede usar el -x
indicador para incluir los archivos que git ignora. Esto sería útil si desea eliminar todo.
Y agregar -i
bandera hace que git le pida permiso para eliminar archivos uno por uno sobre la marcha.
Si no está seguro y quiere verificar las cosas primero, agregue la -n
bandera.
Úselo -q
si no desea ver ningún informe después de una eliminación exitosa.
También creo la imagen a continuación para que sea más memorable, ¡especialmente he visto a muchas personas confundirse -f
por limpiar carpetas a veces o mezclarlas de alguna manera!
Una mejor manera es usar: git clean
git clean -d -x -f
Esto elimina los archivos no rastreados, incluidos los directorios (-d)
y archivos ignorados por git (-x)
.
Además, reemplace el -f
argumento con -n
para realizar un modo interactivo dry-run
o -i
para y le dirá qué se eliminará.
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 para forzar
-d para directorio
-x para archivos ignorados (agregue si es necesario)
Nota: Agregue -n o --dry-run para verificar lo que hará.
Un truco salvavidas para tal situación que acabo de inventar y probar (que funciona perfectamente):
git add .
git reset --hard HEAD
¡Tener cuidado! Asegúrese de confirmar los cambios necesarios (incluso en archivos no rastreados) antes de realizar esto .
git add .
git commit -m 'about to delete'
git reset --hard HEAD~
git add . && git reset --hard HEAD
git add . && git reset --hard
git reset --hard
restablece todos los cambios no confirmados PERO ARCHIVOS SIN SEGUIMIENTO al estado de la última confirmación. Es por eso que primero necesitamos git add .
, que organiza todos los archivos no rastreados (para que también se restablezcan)
git clean -f -d -x $(git rev-parse --show-cdup)
se aplica limpio al directorio raíz, sin importar dónde lo llame dentro de un árbol de directorio de repositorio. Lo uso todo el tiempo, ya que no te obliga a abandonar la carpeta donde trabajas ahora y permite limpiar y confirmar desde el lugar donde estás.
Asegúrese de que las banderas -f
, -d
, -x
coinciden 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.
También hay otras banderas disponibles, solo verifique git clean --help
.
Para mí solo lo siguiente funcionó:
git clean -ffdx
En todos los demás casos, recibí el mensaje "Skipping Directory" para algunos subdirectorios.
-x
y solía git clean -ffd
evitar borrar archivos en .gitignore.
Si solo desea eliminar los archivos enumerados como no rastreados por 'git status'
git stash save -u
git stash drop "stash@{0}"
Prefiero esto a 'git clean' porque 'git clean' eliminará los archivos ignorados por git, por lo que su próxima compilación tendrá que reconstruir todo y también puede perder su configuración IDE.
Para saber qué se eliminará antes de eliminar realmente:
git clean -d -n
Producirá algo como:
Eliminaría sample.txt
Para eliminar todo lo que figura en la salida del comando anterior:
git clean -d -f
Producirá algo como:
Eliminando sample.txt
Para eliminar los archivos no rastreados, 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 que se eliminarán. Ahora, para eliminar esos archivos, use este comando:
git clean -fd
Siempre use -n
antes de ejecutar el comando real, ya que le mostrará qué archivos se eliminarán.
git clean -n -d
git clean -f -d
Por defecto, git clean
solo eliminará los archivos no rastreados que no se ignoran. No se eliminará ningún archivo que coincida con un patrón en su .gitignore u otros archivos ignorados. Si también desea eliminar esos archivos, puede agregar un -x
comando de limpieza.
git clean -f -d -x
También hay un modo interactivo disponible -i
con el comando clean
git clean -x -i
Si no está 100% seguro de que eliminar su trabajo no comprometido es seguro, puede usar el escondite
git stash --all
También borrará su directorio pero le dará flexibilidad para recuperar los archivos en cualquier momento utilizando stash con apply o pop . Luego, en un momento posterior, puede limpiar su alijo usando:
git stash drop // or clean
git stash save and type some comment as to what this stash was for
git clean -f to remove untracked files from working directory.
He cubierto algunos conceptos básicos aquí en mi blog, git-intro-basic-command
El comando uggested para eliminar archivos no rastreados de git docs es git clean
git clean : elimina los archivos no rastreados del árbol de trabajo
Método sugerido: Modo interactivo mediante el uso git clean -i
para que podamos tener control sobre él. deja ver las opciones disponibles restantes.
Opciones Disponibles:
git clean
-d -f -i -n -q -e -x -X (can use either)
Explicación:
1. -d
Elimine los directorios sin seguimiento además de los archivos sin seguimiento. Si un directorio no rastreado es administrado por un repositorio Git diferente, no se elimina de manera predeterminada. Use la opción -f dos veces si realmente desea eliminar dicho directorio.
2. -f, --force
Si la variable de configuración de Git clean.requireForce no está establecida en false, git clean se negará a ejecutarse a menos que se especifique -f, -n o -i.
3. -i, --interactivo
Muestra lo que se haría y limpia los archivos de forma interactiva. Consulte "Modo interactivo" para más detalles.
4. -n, --dry-run
En realidad, no elimine nada, solo muestre lo que se haría.
5. -q, --quiet
Cállate, solo informa errores, pero no los archivos que se eliminan correctamente.
6. -e, --excluir =
Además de los que se encuentran en .gitignore (por directorio) y $ GIT_DIR / info / exclude, también considere que estos patrones están en el conjunto de las reglas de ignorar vigentes.
7. -x
No use las reglas de ignorar estándar leídas de .gitignore (por directorio) y $ GIT_DIR / info / exclude, pero aún use las reglas de ignorar dadas con las opciones -e. Esto permite eliminar todos los archivos sin seguimiento, incluidos los productos de compilación. Esto se puede usar (posiblemente junto con git reset) para crear un directorio de trabajo prístino para probar una compilación limpia.
8. -X
Eliminar solo los archivos ignorados por Git. Esto puede ser útil para reconstruir todo desde cero, pero mantener archivos creados manualmente.
uggested
pero eso es sólo un " uggestion
jajaja
El git clean
comando normal no elimina los archivos no rastreados 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!
Podemos eliminar fácilmente los archivos locales no rastreados del árbol de trabajo git actual mediante el uso de los comentarios de git a continuación.
git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]
Ejemplo:
git reset --hard HEAD
Enlaces :
git clean -ffdx
es la solución
Limpie el repositorio de git y todos los submódulos de forma recursiva
El siguiente comando limpiará el repositorio git actual y todos sus submódulos de forma recursiva:
(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
git clean -f
eliminará los archivos no rastreados del git actual
git clean -fd
cuando desee eliminar directorios y archivos, esto eliminará solo los directorios y archivos sin seguimiento
oh-my-zsh con zsh proporciona esos grandes alias a través del complemento git. También se pueden usar en bash.
gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'
gclean
elimina los directorios sin seguimiento además de los archivos sin seguimiento .gpristine
restablezca los cambios locales, elimine los directorios no rastreados, los archivos no rastreados y no use las reglas de ignorar estándar leídas de .gitignore (por directorio) y $ GIT_DIR / info / exclude, pero aún use las reglas de ignorar dadas con las opciones -e. Esto permite eliminar todos los archivos sin seguimiento, incluidos los productos de compilación. Esto se puede usar (posiblemente junto con git reset) para crear un directorio de trabajo prístino para probar una compilación limpia .bash
. Edité mi respuesta para reflejar eso.
Me gusta usar el git stash
comando, luego puedes obtener archivos escondidos y cambios.
git clean
También es una buena opción, pero depende totalmente de sus requisitos. Aquí está la explicación de git stash y git clean, 7.3 Herramientas Git - Almacenamiento y limpieza
git clean
ahora tiene un modo interactivo ! Vea mi respuesta a esta otra pregunta : git 1.8.4+git clean
o alguna variación en las respuestas a continuación, incluida la versión interactiva para eliminar solo archivos selectivos, pero el modo interactivo puede ser tedioso. Hagas lo que hagas, asegúrate de comprender quégit clean
eliminarás o usarás--dry-run
para que te lo diga sin eliminar nada.rm files-to-be-deleted