headers comandos git

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