comandos - revert branch git
¿Cómo deshacer ''git reset''? (4)
Respuesta corta:
git reset ''HEAD@{1}''
Respuesta larga:
Git mantiene un registro de todas las actualizaciones de referencia (por ejemplo, verificación, restablecimiento, confirmación, combinación). Puedes verlo escribiendo:
git reflog
En algún lugar de esta lista está el compromiso que perdiste. Digamos que acaba de escribir git reset HEAD~
y desea deshacerlo. Mi reflog se ve así:
$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]
La primera línea dice que HEAD
0 posiciones atrás (en otras palabras, la posición actual) es 3f6db14; se obtuvo reiniciando a HEAD~
. La segunda línea dice que la posición HEAD
1 anterior (en otras palabras, el estado antes del restablecimiento) es d27924e. Se obtuvo al verificar un compromiso en particular (aunque eso no es importante en este momento). Entonces, para deshacer el reinicio, ejecute git reset HEAD@{1}
(o git reset d27924e
).
Si, por otro lado, ha ejecutado algunos otros comandos desde que actualizó HEAD, la confirmación que desea no estará en la parte superior de la lista, y tendrá que buscar a través del reflog
.
Una nota final: puede ser más fácil ver el reflog
para la rama específica que desea restablecer, digamos maestro, en lugar de HEAD
:
$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]
Esto debería tener menos ruido que el HEAD reflog
general.
¿Cuál es la forma más sencilla de deshacer el
git reset HEAD~
¿mando? Actualmente, la única forma en que puedo pensar es haciendo un "clon de git http: // ..." desde un repositorio remoto.
Antigua pregunta, y las respuestas publicadas funcionan muy bien. Sin embargo, voy a hacer una pausa con otra opción.
git reset ORIG_HEAD
ORIG_HEAD
referencia a la confirmación a la que HEAD
anteriormente hacía referencia.
Mi situación fue ligeramente diferente, hice git reset HEAD~
tres veces.
Para deshacerlo tuve que hacer
git reset HEAD@{3}
por lo que debería ser capaz de hacer
git reset HEAD@{N}
Pero si has hecho git reset usando
git reset HEAD~3
tendrás que hacer
git reset HEAD@{1}
Como {N} representa el número de operaciones en Reflog. Como señaló Mark en los comentarios.
git reflog
para obtener todas las referencias actualizadas.
2. git reset <id_of_commit_to_which_you_want_restore>
3 La próxima vez evita esto