Pregunta ¿Deshacer el reinicio de git?


¿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 "git clone http: // ..." desde un repositorio remoto.


892
2018-03-24 18:08


origen


Respuestas:


Respuesta corta:

git reset 'HEAD@{1}'

Respuesta larga:

Git mantiene un registro de todas las actualizaciones de ref (por ejemplo, pago, reinicio, compromiso, fusión). Puede verlo escribiendo:

git reflog

En algún lugar de esta lista está el compromiso que perdiste. Digamos que acabas de escribir git reset HEAD~ y quiero 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; fue obtenido reiniciando a HEAD~. La segunda línea dice que HEAD Hace 1 posición (en otras palabras, el estado anterior al restablecimiento) es d27924e. Se obtuvo al verificar un compromiso en particular (aunque eso no es importante en este momento). Entonces, para deshacer el reinicio, ejecuta git reset HEAD@{1} (o git reset d27924e)

Si, por otro lado, has ejecutado algunos otros comandos desde esa actualización de HEAD, la confirmación que deseas no estará en la parte superior de la lista, y necesitarás buscar a través del reflog.

Una nota final: puede ser más fácil mirar el reflog para la rama específica que desea restablecer, diga master, 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 en general HEAD reflog.


1682
2018-03-28 03:32



La pregunta anterior y las respuestas publicadas funcionan de maravilla. Sin embargo, hablaré con otra opción.

git reset ORIG_HEAD

ORIG_HEAD hace referencia al compromiso que HEAD previamente referenciado.


89
2018-01-25 14:10



Mi situación era un poco diferente, lo hice git reset HEAD~ tres veces.

Para deshacerlo tuve que hacer

git reset HEAD@{3}

entonces deberías poder hacer

git reset HEAD@{N}

Pero si has hecho el reinicio de git usando

git reset HEAD~3

deberás hacer

git reset HEAD@{1}

Como {N} representa el número de operaciones en Reflog. Como Mark señaló en los comentarios.


28
2017-08-15 08:38



1.Utilizar git reflog para obtener todas las referencias de actualización.

2.git reset <id_of_commit_to_which_you_want_restore>

3 La próxima vez, evita esto


0
2017-07-05 15:15