Git Reflog
Última actualización
git reflog registra cada lugar al que ha apuntado HEAD: cada commit, checkout, reset y rebase. Como Git conserva esos commits durante un tiempo incluso después de que salgan de tus ramas, el reflog es tu red de seguridad: te permite encontrar y recuperar el trabajo que un reset --hard, un rebase fallido o una rama eliminada parecían haber destruido.
Prueba esto en el terminal playground: una shell real en tu navegador, sin nada que instalar.
Sintaxis
| Command | What it does |
|---|---|
git reflog | Muestra las posiciones recientes de HEAD, con sus hashes |
git reflog show <branch> | Muestra el reflog de una rama |
git reset --hard HEAD@{1} | Devuelve HEAD a una posición anterior |
git branch recovered <hash> | Recrea una rama en un commit perdido |
Recuperarse tras un error
Deshaz un reset erróneo encontrando el commit anterior al reset.
| Step | Command | Result |
|---|---|---|
| 1 | git reflog | Encuentra el commit anterior al reset |
| 2 | git reset --hard HEAD@{1} | Restaura tu rama a ese punto |
Preguntas frecuentes sobre git reflog
¿Qué es git reflog?
Es un registro de todos los lugares a los que ha apuntado
HEAD (y la punta de cada rama) en tu repositorio local: tras commits, checkouts, resets, merges y rebases. A diferencia de git log, que sigue la ascendencia de los commits, el reflog es un registro cronológico de tus acciones, y eso es lo que lo hace útil para la recuperación.¿Cómo recupero un commit tras git reset --hard?
Ejecuta
git reflog para encontrar la entrada del commit en el que estabas antes del reset (algo como HEAD@{1}), y luego git reset --hard <that-hash> (o HEAD@{1}) para volver a él. El commit no se eliminó realmente: solo dejó de tener una rama que lo apuntara, y el reflog aún conoce su hash.¿Cómo restauro una rama eliminada?
Encuentra el último commit de la rama en
git reflog y luego recrea la rama ahí: git branch <name> <hash>. Mientras la eliminación sea reciente (dentro del periodo de expiración del reflog de Git, normalmente semanas), los commits siguen siendo alcanzables de esta forma.¿Funciona git reflog entre clones?
No: el reflog es local a tu repositorio y no se sube ni se clona. Solo registra las acciones de tu máquina. Por eso puede rescatar errores locales, pero no puede recuperar algo que solo existió en un clon distinto.
¿Puedo practicar esto en línea?
Sí. Abre el terminal playground para ejecutar
git reflog en una shell real en tu navegador, sin nada que instalar. El curso interactivo y gratuito de Git de Coddy también cubre cómo deshacer cambios y recuperar trabajo paso a paso.