Herramientas

Guía para recuperar commits perdidos en Git

Perder commits en Git es una experiencia desagradable. Después de invertir tiempo y esfuerzo en el código, ver que este no está en el repositorio es frustrante y estresante. Algo que sé por experiencia propia. Sin embargo, en Git existen herramientas para restaurar los commits perdidos y recuperar el trabajo. Generalmente, aunque no se vean los commits, lo normal es que estos sigan estando en el repositorio. En esta entrada se verán los pasos para recuperar commits perdidos en Git. Unos pasos que me han servido para solucionar este problema una vez.

Nota importante: Si bien los pasos que se explican en esta entrada permiten recuperar los commits perdidos, algo que he probado en primera persona, es fundamental realizar una copia de seguridad del repositorio antes de aplicar cualquier acción. Así, en caso de cualquier problema, siempre se dispondrá de una copia del trabajo en caso de que algo salga mal durante el proceso de recuperación de los commits perdidos en Git. Una medida de prevención sencilla para evitar cualquier pérdida de datos.

Revisar el registro de reflogs

Git mantiene un registro detallado de todas las operaciones realizadas en el repositorio, incluidos los cambios en las ramas y los commits. El comando para acceder a ese registro es
git reflog. En cada entrada de este registro representa una acción realizada sobre el repositorio, pudiendo ver también el hash asociado a esta. Ahora, solo se deben identificar el commit perdido en el registro y copiar el hash.

Revisar el registro de commits

Si no aparece el commit perdido en el reflog, es posible que este se pueda encontrar en el registro de commits. Para ello se debe utilizar el comando git log --all. Un comando que devuelve todos los commits que hay en el repositorio, incluso aquellos que no están referenciados por ninguna rama o etiqueta. Al igual que antes, se debe buscar el commit en el listado y copiar su hash.

Crear una nueva rama o restablecer la rama existente

Una vez copiado el hash correspondiente al commit perdido en el registro ya se puede crear una rama para este o restablecer la rama para que apunte al commit. Para lo que se pueden usar los siguientes comandos:

  • Para crear una nueva rama que apunte al commit perdido:
git checkout -b nueva_rama 
  • Para restablecer la rama existente para que apunte al commit perdido:
git reset --hard 

Utilizar herramientas de recuperación de Git

Si las opciones anteriores no funcionan, existen otras herramientas de recuperación en Git con las que se puede intentar recuperar los commits perdidos. Una de las opciones es git fsck. Este comando permite buscar objetos corruptos en la base de datos de Git y, a veces, recuperar commits perdidos. Para lo que se debe ejecutar el siguiente comando:

git fsck --lost-found

Conclusiones

Recuperar commits perdidos en Git puede parecer algo imposible, pero con las herramientas adecuadas es posible restaurar el trabajo a su estado anterior. Evitando de esta manera la pérdida de trabajo. Aun así, es importante mantener copias de seguridad de los repositorios y guardar este tutorial para estar preparado en caso de emergencia. Evitando de esta manera una experiencia frustrante con una herramienta clave en la que se guarda el trabajo.

Imagen de NoName_13 en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Git

Recent Posts

Curiosidad: El “bug”, la polilla y la leyenda de Grace Hopper

Cualquiera que programe usa la palabra bug a diario para referirse a un fallo en…

1 día ago

BG/BB: el modelo de CLV para compras en períodos discretos

Los dos artículos anteriores de la serie cubrieron BG/NBD, el modelo para negocios donde el…

3 días ago

Por Qué las Contraseñas Largas son más Seguras que las Complejas

"Tu contraseña debe tener al menos 8 caracteres, una mayúscula, un número y un símbolo…

1 semana ago

Gini, KS y AUC: Cómo Medir la Calidad de un Modelo de Credit Scoring

Cuando un analista de riesgo presenta un nuevo scorecard ante el comité de dirección, la…

1 semana ago

Curiosidad: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

2 semanas ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

2 semanas ago

This website uses cookies.