ver - ¿Cómo eliminar archivos locales(sin seguimiento) del árbol de trabajo de Git actual?




ver cambios en un archivo git (20)

¿Cómo eliminar archivos locales sin seguimiento de su árbol de trabajo actual?


Una forma sencilla de eliminar archivos sin seguimiento

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

git add --all
git reset --hard HEAD

Limpia el repositorio de git y todos los submódulos recursivamente

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

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

Tenga cuidado al ejecutar el comando `git clean`.

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

De forma predeterminada, git clean solo eliminará los archivos sin seguimiento 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 al comando de limpieza.

git clean -f -d -x

También hay un modo interactivo disponible -i con el comando de limpieza

git clean -x -i

Alternativamente

Si no está 100% seguro de que eliminar su trabajo no comprometido sea seguro, podría usar el almacenamiento de datos en su lugar.

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, puedes limpiar tu alijo usando:

git stash drop // or clean

El comando normal de git clean no elimina los archivos sin git version 2.9.0.windows.1 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!

Esto es lo que siempre uso:

git clean -fdx

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


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

EDITAR: También encontré una manera de mostrar un archivo sin seguimiento en un alijo (por ejemplo, git show [email protected]{0}^3 ) https://.com/a/12681856/338986

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


Para eliminar los archivos sin seguimiento, 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 serán eliminados. Ahora para eliminar realmente esos archivos use este comando:

git clean -fd

Para mi solo seguí trabajado:

git clean -ffdx

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


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

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 uso 'git reset --hard HEAD' para volver a un commit anterior?
  3. Restablecer la rama del repositorio local para que sea igual que el repositorio remoto HEAD
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html

Según la documentación de Git git clean

Eliminar archivos sin seguimiento del árbol de trabajo

El paso 1 es mostrar lo que se eliminará utilizando la opción -n :

git clean -n

Paso limpio - 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 entre mayúsculas y minúsculas en la X para los dos últimos comandos.

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

Nuevamente, vea los documentos de git-clean para obtener más información.

Opciones

-F

--fuerza

Si la variable de configuración de Git clean.requireForce no se establece en falso, git clean se negará a ejecutarse a menos que se indique -f, -n o -i.

-X

No use las reglas de ignorar estándar que se leen desde .gitignore (por directorio) y $ GIT_DIR / info / exclude, pero aún así use las reglas de ignorar dadas con las opciones -e. Esto permite eliminar todos los archivos sin seguimiento, incluidos los productos de compilación. Se puede usar (posiblemente junto con git reset) para crear un directorio de trabajo prístino para probar una construcción limpia.

-X

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

-norte

--dry-run

No elimines nada, solo muestra lo que se haría.

-re

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


Si es necesario para eliminar archivos sin seguimiento de un subdirectorio particular,

git clean -f {dir_path}

Y forma combinada de eliminar archivos / dir sin seguimiento y archivos ignorados.

git clean -fxd {dir_path}

después de esto, tendrá archivos modificados solo en git status .


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

git stash save -u
git stash drop "[email protected]{0}"

Prefiero esto a '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 tu configuración de IDE.


Una mejor manera es usar: git clean.

git clean -d -x -f

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

Además, reemplace el argumento -f con -n para realizar una ejecución en dry-run o -i para el modo interactivo y le dirá qué se eliminará.


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

Luego puedes verificar si tus archivos realmente se han ido con el git status .


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


git clean -f -d -x $(git rev-parse --show-cdup) aplica limpia 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 dejar la carpeta en la que trabajas ahora y te permite limpiar y comprometer desde el lugar donde te encuentras.

Asegúrese de que las banderas -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.

También hay otras banderas disponibles, solo compruebe git clean --help .


git clean -fd elimina el directorio

git clean -fX elimina los archivos ignorados

git clean -fx elimina los archivos ignorados y no ignorados

Puede usarse todas las opciones anteriores en combinación como

git clean -fdXx

Consulte el manual de Git para más ayuda.


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 o --dry-run para solo verificar lo que hará.


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

Esto te pone en el mismo estado que un clon nuevo.

git clean -ffdx

Eliminar 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, carpeta de compilación)

git clean -fd

Eliminar carpetas adicionales + archivos ignorados (pero no archivos agregados recientemente)

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

git clean -fdX

Nuevo modo interactivo

git clean

oh-my-zsh con zsh proporciona esos alias geniales a través del complemento git. Se pueden usar en bash también.

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

  • gclean elimina los directorios sin gclean además de los archivos sin seguimiento .
  • gpristine restablece los cambios locales, elimina directorios no rastreados, archivos no rastreados y no usa las reglas de ignorar estándar de .gitignore (por directorio) y $ GIT_DIR / info / exclude, pero sigue usando las reglas de ignorar dadas con las opciones -e . Esto permite eliminar todos los archivos sin seguimiento, incluidos los productos de compilación. Se puede utilizar (posiblemente junto con git reset) para crear un directorio de trabajo prístino para probar una construcción limpia .




git-branch