Pregunta git deshacer todos los cambios no confirmados o no guardados


Estoy intentando deshacer todos los cambios desde mi último compromiso. Lo intenté git reset --hard y git reset --hard HEAD después de ver esta publicación. Respondo con la cabeza ahora en 18c3773 ... pero cuando miro mi fuente local, todos los archivos siguen ahí. ¿Qué me estoy perdiendo?


542
2017-12-28 20:46


origen


Respuestas:


  • Esto borrará todos los archivos con los que hayas organizado git add:

    git reset
    
  • Esto revertirá todos los cambios locales no confirmados (se debe ejecutar en la raíz del repositorio):

    git checkout .
    

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

    git checkout [some_dir|file.txt]
    

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

    git reset --hard HEAD
    
  • Esto eliminará todos los archivos locales sin seguimiento, por lo que solamente Los archivos git rastreados permanecen:

    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 se eliminarán.


Para resumir: la ejecución de comandos a continuación es básicamente equivalente a los nuevos git clone desde 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 de esto sería en 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 vuelva a funcionar. clonar todo el repositorio cada vez.


1094
2017-12-28 21:04



Si quieres "deshacer"todos los cambios no confirmados simplemente se ejecutan:

git stash
git stash drop

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

git clean -fdx

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

stash@{0}: WIP on rails-4: 66c8407 remove forem residuals
stash@{1}: WIP on master: 2b8f269 Map qualifications
stash@{2}: WIP on master: 27a7e54 Use non-dynamic finders
stash@{3}: WIP on blogit: c9bd270 some changes

Cada escondite lleva el nombre del mensaje de compromiso anterior.


97
2017-07-18 20:59



también hay git stash - que "esconde" sus cambios locales y puede volver a aplicarse en otro momento o eliminarse si ya no es necesario

Más información sobre escondite


15
2017-12-28 21:17



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

1) solo necesita restablecer el estado del archivo del espacio de trabajo

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

enter image description here

Es así de simple: D


11
2017-07-14 17:19



Para aquellos que llegaron aquí buscando si podían deshacer git clean -f -d , mediante el cual un archivo creado en eclipse fué borrado,

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


4
2017-08-28 09:31



Estados que realizan la 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 de estado

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

Verificar diferencia

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

Revertir al último commit

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 clon git, sin volver a descargar nada

git reset; git checkout .; git clean -fdx

1
2017-07-01 08:54