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

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…

2 días ago

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

En la serie Creación de una API REST con Express y TypeScript construimos una API…

4 días ago

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…

1 semana ago

Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows

En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…

2 semanas ago

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

2 semanas ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

3 semanas ago

This website uses cookies.