git reflog

Inspección y comparación

Muestra por dónde han pasado HEAD y las ramas


El comando 'git reflog' lista cada posición que ha tenido HEAD: cada commit, cambio de rama, reset, fusión y rebase, del más reciente al más antiguo. Es local a tu repositorio y es la red de seguridad del trabajo perdido — los commits que un reset o un rebase quitaron de una rama siguen listados y se recuperan con HEAD@{n}. Por defecto, las entradas caducan a los 90 días.

Sinopsis

git reflog [show] [<log-options>] [<ref>]
[ ] opcional| o<arg> valor a sustituir... repetible--flag opción

Opciones

Haz clic en una opción para desplegarla

Principiante (1)

Limita la lista a las n entradas más recientes (también se escribe -<n>).

RecomendadoLas entradas más recientes suelen ser las que necesitas

Ejemplo

git reflog -n 5

Elegir la opción adecuada

log frente a reflog

Dos historiales

ComandoLista¿Compartido?
git logCommits alcanzables desde una ramaSí, con los commits
git reflogCada movimiento de HEAD, incluso a commits que ninguna rama tieneNo, solo local

Ejemplos

Listar los movimientos de HEAD

git reflog

Del más reciente al más antiguo, con nombres HEAD@{n}.


Deshacer un reset

git reset --hard HEAD@{1}

Vuelve a donde estaba HEAD un movimiento antes.


Reflog de una rama

git reflog show main

Solo los movimientos de main.

Ejemplos de flujos de trabajo

1
git reflog

Encontrar la entrada anterior al reset

2
git reset --hard HEAD@{1}

Volver a ella

1
git reflog

Encontrar el último commit de esa rama

2
git switch -c feature/login a1b2c3d

Recrear la rama ahí

Solución de problemas

El commit no está en el reflog

Causa: Nunca se extrajo aquí, o la entrada caducó

Prueba git fsck --lost-found para commits huérfanos

HEAD@{1} apunta a un sitio inesperado

Causa: Cada cambio de rama también cuenta como movimiento

Lee el reflog y elige la entrada exacta

Consejos y trampas

Buenas prácticas

  • ✓Revisa git reflog antes de entrar en pánico por commits perdidos.
  • ✓Recupera primero en una rama nueva (git switch -c rescue <hash>) para revisar sin riesgo.

Errores comunes

  • ✗Creer que un reset --hard borró commits para siempre — el reflog aún los tiene.
  • ✗Esperar demasiado: los commits inalcanzables desaparecen cuando caducan las entradas del reflog y se ejecuta git gc.
  • ✗Esperar el reflog en otra máquina — nunca se sube ni se clona.

Preguntas frecuentes

A:

Por defecto, 90 días las alcanzables y 30 días las inalcanzables.

A:

No, solo lista. Son git reflog expire y delete los que eliminan entradas.