it-swarm.dev

git deshacer todos los cambios no confirmados o no guardados

Estoy intentando deshacer todos los cambios desde mi última confirmación. Intenté git reset --hard y git reset --hard HEAD después de ver este post . Respondo con la cabeza ahora está en 18c3773 ... pero cuando miro mi fuente local, todos los archivos todavía están allí. ¿Qué me estoy perdiendo?

680
Antarr Byrd
  • Esto anulará la fase de todos los archivos que haya almacenado con git add:

    git reset
    
  • Esto revertirá todos los cambios locales no confirmados (deben ejecutarse en la raíz de recompra):

    git checkout .
    

    También puede revertir cambios no confirmados solo a un archivo o directorio en particular:

    git checkout [some_dir|file.txt]
    

    Otra forma de revertir todos los cambios no confirmados (más tiempo para escribir, pero funciona desde cualquier subdirectorio):

    git reset --hard HEAD
    
  • Esto eliminará todos los archivos locales sin seguimiento, por lo que only git seguido los archivos:

    git clean -fdx
    

    ADVERTENCIA: -x también eliminará todos los archivos ignorados, incluidos los especificados por .gitignore! Es posible que desee utilizar -n para obtener una vista previa de los archivos que desea eliminar.


En resumen: ejecutar los comandos a continuación es básicamente equivalente a git clone fresco de la fuente original (pero no vuelve a descargar nada, por lo que es mucho más rápido):

git reset
git checkout .
git clean -fdx

El uso típico para esto sería en los scripts de compilación, cuando debe asegurarse de que su árbol esté absolutamente limpio; no tiene modificaciones, ni archivos de objetos creados localmente ni artefactos de compilación, y desea que funcione muy rápido y no volver a Clonar todo el repositorio cada vez.

1330
mvp

Si desea " deshacer " todos los cambios no confirmados simplemente ejecute:

git stash
git stash drop

Si tiene algún archivo sin seguimiento (verifique ejecutando git status), estos pueden eliminarse ejecutando:

git clean -fdx

git stash crea un nuevo stash que se convertirá en stash @ {0} . Si desea verificar primero, puede ejecutar git stash list para ver una lista de sus escondites. Se verá algo así como:

[email protected]{0}: WIP on Rails-4: 66c8407 remove forem residuals
[email protected]{1}: WIP on master: 2b8f269 Map qualifications
[email protected]{2}: WIP on master: 27a7e54 Use non-dynamic finders
[email protected]{3}: WIP on blogit: c9bd270 some changes

Cada alijo se nombra después del mensaje de confirmación anterior.

125
Abram

también hay git stash, que "esconde" sus cambios locales y se puede volver a aplicar más tarde o eliminar si ya no es necesario

más información sobre el almacenamiento

17
keshav

Estoy usando el árbol de fuentes ... Puedes revertir todos los cambios no confirmados con 2 sencillos pasos:

1) solo es necesario restablecer el estado del archivo del área de trabajo

 enter image description here 2) seleccione todos los archivos en reposo (comando + a), haga clic derecho y seleccione eliminar

 enter image description here

Es así de simple: D

11
user1872384

Para aquellos que llegaron aquí buscando si podían deshacer git clean -f -d, mediante el cual se eliminó un archivo creado en Eclipse ,

Puede hacer lo mismo desde la interfaz de usuario usando "restaurar desde el historial local" para ref: Restaurar desde el historial local

5
Abdul Rahman K

Estados en transición de un compromiso a un nuevo compromiso

0. last commit,i.e. HEAD commit
1. Working tree changes, file/directory deletion,adding,modification.
2. The changes are staged in index
3. Staged changes are committed

Acción para la transición estatal.

0->1: manual file/directory operation
1->2: git add .
2->3: git commit -m "xxx"

Comprobar dif

0->1: git diff
0->2: git diff --cached
0->1, and 0->2: git diff HEAD
last last commit->last commit: git diff HEAD^ HEAD

Volver a la última confirmación

2->1: git reset
1->0: git checkout .     #only for tracked files/directories(actions include modifying/deleting tracked files/directories)
1->0: git clean -fdx     #only for untracked files/directories(action includes adding new files/directories)
2->1, and 1->0: git reset --hard HEAD

Equivalente a git clone, sin volver a descargar nada.

git reset; git checkout .; git clean -fdx
2
Zii

Lo que hago es

git añadir. (añadiendo todo)

git stash

git stash drop.

Un trazador de líneas: 'git añadir. && git stash && git stash drop '

1
Ralph