ver restaurar modificados ignorar deshacer comandos cambios archivos git

restaurar - git: deshacer todos los cambios de directorio de trabajo, incluidos los archivos nuevos



ignorar archivos git (12)

Cómo eliminar todos los cambios del directorio de trabajo, incluidos los nuevos archivos sin seguimiento. Sé que git checkout -f hace eso, pero no elimina los nuevos archivos sin seguimiento creados desde la última confirmación.

¿Alguien tiene una idea de cómo hacer eso?


Echa un vistazo al comando git clean .

git-clean - Elimina los archivos sin seguimiento del árbol de trabajo

Limpia el árbol de trabajo eliminando recursivamente los archivos que no están bajo el control de versiones, comenzando desde el directorio actual.

Normalmente, solo se eliminan los archivos desconocidos para git, pero si se especifica la opción -x, también se eliminan los archivos ignorados. Esto puede, por ejemplo, ser útil para eliminar todos los productos de compilación.


Los siguientes trabajos:

git add -A . git stash git stash drop stash@{0}

Tenga en cuenta que esto descartará tanto los cambios locales no organizados como los estadificados. Por lo tanto, debe cometer cualquier cosa que desee mantener antes de ejecutar estos comandos.

Un caso de uso típico: movió muchos archivos o directorios y luego desea volver al estado original.

Créditos: https://.com/a/52719/246724


Método más seguro, que uso con frecuencia:

git clean -fd

Como se mencionó en los comentarios, podría ser preferible hacer un git clean -nd que haga una ejecución en seco y le diga qué se eliminaría antes de eliminarlo.

Enlace a la página de git clean doc: https://git-scm.com/docs/git-clean


Para todos los archivos sin etapas usar:

git checkout -- .

El . Al final es importante.

Usted puede reemplazar . con un nombre de subdirectorio para borrar solo un subdirectorio específico de su proyecto. El problema se aborda específicamente here .


Para una carpeta específica utilicé:

git checkout -- FolderToClean/*


Pensé que era ( advertencia: lo siguiente borrará todo )

$ git reset --hard HEAD $ git clean -fd

El reset para deshacer los cambios. La clean para eliminar cualquier archivo no rastreado e irectorías.


Puedes hacer esto en dos pasos:

  1. Revertir archivos modificados: git checkout -f
  2. Eliminar archivos git clean -fd : git clean -fd

Si desea descartar todos los cambios, puede usar cualquiera de las opciones válidas en un alias en .gitconfig . Por ejemplo:

[alias] discard = "!f() { git add . && git stash && git stash drop stash@{0}; }; f"

Uso: git discard


Una solución alternativa es confirmar los cambios y luego deshacerse de esos compromisos. Esto no tiene un beneficio inmediato al principio, pero abre la posibilidad de comprometerse en trozos y crear una etiqueta git para copia de seguridad.

Puedes hacerlo en la rama actual, así:

git add (-A) . git commit -m"DISCARD: Temporary local changes" git tag archive/local-changes-2015-08-01 # optional git revert HEAD git reset HEAD^^

O puedes hacerlo en HEAD desprendida. (asumiendo que comiences en la rama BRANCHNAME):

git checkout --detach HEAD git add (-A) . git commit -m"DISCARD: Temporary local changes" git tag archive/local-changes-2015-08-01 # optional git checkout BRANCHNAME

Sin embargo, lo que normalmente hago es cometer en trozos, luego nombrar algunos o todos los confirmaciones como "DESCARGAR: ...". Luego use rebase interactivo para eliminar las malas confirmaciones y mantener las buenas.

git add -p # Add changes in chunks. git commit -m"DISCARD: Some temporary changes for debugging" git add -p # Add more stuff. git commit -m"Docblock improvements" git tag archive/local-changes-2015-08-01 git rebase -i (commit id) # rebase on the commit id before the changes. # Remove the commits that say "DISCARD".

Esto es más detallado, pero permite revisar exactamente qué cambios desea descartar.

Los métodos abreviados de git lol y git lola han sido muy útiles con este flujo de trabajo.


git clean -i primero le mostrará los elementos que desea eliminar y procederá después de su confirmación. Encuentro esto útil cuando se trata de archivos importantes que no deberían eliminarse accidentalmente.

Consulte git help clean para obtener más información, incluidas algunas otras opciones útiles.


git reset --hard # removes staged and working directory changes ## !! be very careful with these !! ## you may end up deleting what you don''t want to ## read comments and manual. git clean -f -d # remove untracked git clean -f -x -d # CAUTION: as above but removes ignored files like config. git clean -fxd :/ # CAUTION: as above, but cleans untracked and ignored files through the entire repo (without :/, the operation affects only the current directory)

Para ver lo que se eliminará de antemano, sin borrarlo realmente, use la -n (esto es básicamente una prueba de ejecución). Cuando esté listo para eliminar, elimine la -n :

git clean -nfd


git reset --hard origin/{branchName}

Se eliminarán todos los archivos sin seguimiento.