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 esgit 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
Deja una respuesta