git deshacer todos los cambios no comprometidos o no guardados
Estoy intentando deshacer todos los cambios desde mi última confirmación. Probé git reset --hard
y git reset --hard HEAD
después de ver este post. I responde con la cabeza está ahora en 18c3773... pero cuando miro mi fuente local todos los archivos siguen ahí. ¿Qué me estoy perdiendo?
6 answers
-
Esto eliminará todos los archivos con los que haya preparado
git add
:git reset
-
Esto revertirá todos los cambios locales no comprometidos (deben ejecutarse en la raíz repo):
git checkout .
También puede revertir los cambios no comprometidos solo a un archivo o directorio particular:
git checkout [some_dir|file.txt]
Otra forma de revertir todos los cambios no confirmados (más larga para escribir, pero funciona desde cualquier subdirectorio):
git reset --hard HEAD
-
Esto eliminará todos los archivos locales sin seguimiento, por lo que solo los archivos rastreados de git permanecen:
git clean -fdx
AVISO:
-x
también eliminará todos los archivos ignorados, incluidos los especificados por.gitignore
! Es posible que desee utilizar-n
para la vista previa de los archivos que se eliminarán.
Para resumirlo: ejecutar los comandos a continuación es básicamente equivalente a fresh 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 para esto sería en scripts de compilación, cuando debe asegurarse de que su árbol está absolutamente limpio - no tiene ninguna modificación o archivos de objetos creados localmente o artefactos de construcción,y desea hacer que funcione muy rápido y no volver a clonar todo el repositorio cada vez.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-08 21:31:24
Si desea "deshacer " todos los cambios no comprometidos simplemente ejecute:
git stash
git stash drop
Si tiene archivos sin seguimiento (compruebe ejecutando git status
), estos pueden eliminarse ejecutando:
git clean -fdx
git stash
crea un nuevo alijo que se convertirá en alijo@{0}. Si desea comprobar 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 stash lleva el nombre del mensaje de confirmación anterior.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-18 20:59:59
También existe git stash
- que "almacena" sus cambios locales y puede volver a aplicarse en un momento posterior o eliminarse si ya no es necesario
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-28 21:17:00
Estoy usando el árbol de fuentes.... Puede revertir todos los cambios no comprometidos con 2 sencillos pasos:
1) solo necesita restablecer el estado del archivo del espacio de trabajo
2) seleccione todos los archivos de unstage (comando + a), haga clic derecho y seleccione eliminar
Es así de simple: D
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-14 17:19:58
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-17 11:32:11
Estados en transición de un commit a un nuevo commit
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"
Comprobar 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
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-23 18:06:21