0Pricing
Git & GitHub Professional Workflow · Lección

Git Reflog y recuperación del historial

Domine `git reflog` para recuperar commits o ramas perdidos y disponer de una red de seguridad para su trabajo.

Git Reflog y recuperación del historial es una lección gratuita de Git & GitHub Professional Workflow en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Git & GitHub Professional Workflow, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Git & GitHub Professional Workflow incluye 4 lecciones en total.

¿Qué es Git Reflog?

¿Alguna vez ha eliminado accidentalmente una rama o ha restablecido el repositorio al commit equivocado? ¡No se preocupe! Git cuenta con una potente red de seguridad llamada Reflog.

El reflog (registro de referencias) es un registro de las posiciones que han ocupado HEAD y los punteros de las ramas en su repositorio local.

Cómo registra el historial Reflog

A diferencia del historial de commits (git log), que registra los cambios realizados en los archivos del proyecto, el reflog registra los cambios en las referencias del repositorio.

Cada vez que se mueve HEAD (el commit actual) o el puntero de una rama, Git registra este evento en el reflog. Esto incluye:

  • Confirmar cambios
  • Cambiar de rama
  • Fusionar o cambiar la base
  • Realizar un restablecimiento
  • Clonar un repositorio

Ver su Reflog

Para ver su reflog, solo tiene que utilizar el comando git reflog. Este muestra una lista de acciones y el estado de HEAD en cada momento.

Simulemos algunas acciones y, después, veamos el reflog:

git init my_repo
cd my_repo

echo "First line" > file.txt
git add file.txt
git commit -m "Initial commit"

echo "Second line" >> file.txt
git add file.txt
git commit -m "Add second line"

git reflog

Interpretar las entradas del Reflog

Cada entrada del reflog tiene un formato específico. Analicemos una entrada habitual:

a1b2c3d HEAD@{0}: commit: Add new feature

  • a1b2c3d: El hash SHA-1 del commit en el que se encontraba HEAD en ese momento.
  • HEAD@{0}: Es el «puntero de la entrada del reflog». @{0} es el estado más reciente, @{1} es el anterior y así sucesivamente.
  • commit: Add new feature: Una descripción de la acción que provocó el movimiento de HEAD.

¡Estos punteros son fundamentales para la recuperación!

Escenario: recuperar un commit perdido

Imagine que ha creado un commit y, después, lo ha deshecho accidentalmente con git reset --soft HEAD~1. El commit ya no aparece en el historial de su rama actual, ¡pero no ha desaparecido realmente!

El reflog lo recuerda. Simulemos este error habitual:

git init my_project_recovery
cd my_project_recovery

echo "Initial content" > start.txt
git add start.txt
git commit -m "Initial commit"

echo "Important feature" > feature.txt
git add feature.txt
git commit -m "Added an important feature"

# Oops! Accidentally reset
git reset --soft HEAD~1

git reflog

Recuperar el commit

Después del restablecimiento, si ejecuta git reflog, verá una entrada correspondiente al commit «Added an important feature», quizás como HEAD@{1} o algo similar.

Para recuperarlo, puede utilizar git reset con la entrada del reflog. Por ejemplo, si el hash del commit perdido era abcdefg o su entrada del reflog era HEAD@{1}:

# Assuming the lost commit was HEAD@{1} in the reflog
git reset --hard HEAD@{1}

# Or using the specific commit hash from reflog
# git reset --hard abcdefg

# Now, check your log. The commit is back!
git log --oneline

Escenario: recuperar una rama eliminada

¿Qué ocurre si elimina accidentalmente una rama completa antes de fusionarla o si pensaba que ya no la necesitaba?

Las ramas son simplemente punteros a commits. Si elimina una rama, los commits a los que apuntaba no se eliminan inmediatamente del repositorio. ¡El reflog aún recuerda dónde estaba el HEAD de esa rama!

Restaurar una rama desde el Reflog

Supongamos que tenía una rama llamada feature-x, trabajó en ella y después la eliminó con git branch -D feature-x.

Al ejecutar git reflog, podría ver una entrada como esta:

1234567 HEAD@{5}: branch: Created branch feature-x o
abcdefg HEAD@{2}: checkout: moving from feature-x to master

Puede utilizar el hash del commit (por ejemplo, 1234567 o abcdefg) de la entrada del reflog en la que la rama estaba activa para volver a crearla:

# Assume 'feature-x' was deleted and its last commit was '1234567'

# Create a new branch pointing to that commit
git branch feature-x-recovered 1234567

# Now, check out your recovered branch
git checkout feature-x-recovered

# Verify its history
git log --oneline

Las entradas del Reflog caducan

Aunque el reflog es una potente red de seguridad, sus entradas no duran para siempre. Git depura las entradas antiguas del reflog después de cierto tiempo.

  • De forma predeterminada, las entradas alcanzables (desde su HEAD actual) caducan después de 90 días.
  • Las entradas inalcanzables (por ejemplo, de ramas eliminadas o de commits que ya no tienen referencias) caducan después de 30 días.

¡Por eso es mejor recuperar el trabajo «perdido» cuanto antes!

Desafío de recuperación con Reflog

Ha creado una nueva rama de funcionalidad, ha realizado varios commits y, después, la ha eliminado accidentalmente sin fusionarla. Ejecuta git reflog y ve esta entrada:

...
c0ffee1 HEAD@{3}: commit: Implement new user profile page
bada55e HEAD@{4}: checkout: moving from feature/profile to main
...

¿Qué secuencia de comandos volvería a crear correctamente la rama feature/profile, haciendo que apunte al último commit que tenía antes de eliminarla?

Reflog: su red de seguridad de Git

Ha aprendido a utilizar git reflog, una herramienta fundamental para recuperar trabajo «perdido» en su repositorio local de Git. Recuerde:

  • Registra dónde han estado HEAD y los punteros de las ramas.
  • Utilice git reflog para consultar este historial.
  • Puede recuperar commits o ramas mediante git reset o git branch con entradas del reflog (HEAD@{n} o hashes de commits).
  • Las entradas del reflog caducan, así que actúe rápidamente si necesita recuperar algo.

Mantenga limpio el historial de Git, pero recuerde que el reflog está ahí para las emergencias.

Preguntas frecuentes

¿La lección «Git Reflog y recuperación del historial» es gratis?

Sí — el texto completo de «Git Reflog y recuperación del historial» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Git & GitHub Professional Workflow, actualiza a CoddyKit PRO. El curso de Git & GitHub Professional Workflow incluye 4 lecciones en total.

¿Qué aprenderé en «Git Reflog y recuperación del historial»?

Domine `git reflog` para recuperar commits o ramas perdidos y disponer de una red de seguridad para su trabajo. Practicas Git & GitHub Professional Workflow con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Git & GitHub Professional Workflow?

No se requiere experiencia previa. Git & GitHub Professional Workflow en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Git Reflog y recuperación del historial»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Git & GitHub Professional Workflow?

Sí. Cada lección de Git & GitHub Professional Workflow incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Git Reflog y recuperación del historial
  2. Git Bisect para depuración
  3. Mantenimiento y limpieza de repositorios
  4. Reescritura del historial con git filter-repo
← Volver a Git & GitHub Professional Workflow