Git deshacer todos los cambios no confirmados o no guardados

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

419
28 дек. puesta por Antarr Byrd 28 dic. 2012-12-28 23:46 '12 a las 11:46 2012-12-28 23:46
@ 6 respuestas
  • Esto deshabilitará todos los archivos que podrías poner con git add :

     git reset 
  • Esto dará como resultado la devolución de todos los cambios locales no confirmados (se deben realizar en la raíz del repositorio):

     git checkout . 

    También puede devolver los cambios no confirmados solo a un archivo o directorio específico:

     git checkout [some_dir|file.txt] 

    Otra forma de deshacer todos los cambios no confirmados (más largos que el tipo, pero funciona desde cualquier subdirectorio):

     git reset --hard HEAD 
  • Esto eliminará todos los archivos locales no reproducibles, por lo que solo quedarán los archivos monitoreados de git:

     git clean -fdx 

    ADVERTENCIA: -x también eliminará todos los archivos ignorados!


Para resumir: ejecutar los siguientes comandos es básicamente equivalente a un nuevo git clone de la fuente original (pero no vuelve a cargar nada que sea mucho más rápido):

 git reset git checkout . git clean -fdx 

Un uso típico de esto sería en los scripts de compilación, cuando tenga que asegurarse de que su árbol esté absolutamente limpio; no tenga cambios, ni archivos de objetos o conjuntos de artefactos creados localmente, y desea que funcione muy rápidamente y no vuelva a clonar todo el repositorio. tiempos

856
29 дек. La respuesta está dada por mvp 29 dec. 2012-12-29 00:04 '12 a las 0:04 2012-12-29 00:04

Si desea deshacer , todos los cambios no confirmados se ejecutan simplemente:

 git stash git stash drop 

Si tiene archivos sin procesar (verifique ejecutando el git status ), puede eliminarlos ejecutando:

 git clean -fdx 
border=0

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

 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 sello lleva el nombre del comando de confirmación anterior.

71
18 июля '14 в 23:59 2014-07-18 23:59 La respuesta es dada por Abram el 18 de julio de 2014 a las 11:59 pm 2014-07-18 23:59

También hay un git stash , que "bloquea" los cambios locales y se puede volver a aplicar más tarde o restablecer si ya no es necesario.

más información de bloqueo

14
29 дек. La respuesta es dada por keshav el 29 de diciembre. 2012-12-29 00:17 '12 a las 0:17 2012-12-29 00:17

Utilizo el árbol de origen ... Puede realizar todos los cambios no confirmados mediante dos simples pasos:

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

2019

Para aquellos que vinieron aquí, si pueden cancelar git clean -f -d , con el cual se eliminó el archivo creado en eclipse ,

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

3
28 авг. Respuesta dada por Abdul Rahman K 28 ago. 2015-08-28 12:31 '15 a las 12:31 pm 2015-08-28 12:31

Basado en mi investigación, recibí un resumen a continuación.

CONDICIÓN DE TRANSICIÓN DE UN COMITÉ A UN NUEVO COMITÉ

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

ACCIONES PARA LA TRANSICION DEL ESTADO:

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

VERIFICAR DIFF:

 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 

ÚLTIMO COMITÉ ABIERTO:

 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 GIT CLONE SIN DESCARGAR NADA

 git reset; git checkout .; git clean -fdx 
0
01 июля '16 в 11:54 2016-07-01 11:54 La respuesta se da Zii 01 de julio de 2016 a las 11:54 2016-07-01 11:54

Otras preguntas sobre las etiquetas o hacer una pregunta