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?
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
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

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.
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.
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
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
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
Otras preguntas sobre las etiquetas git git-reset línea de comandos deshacer o hacer una pregunta