Comprobar el git reflog
para la Eliminación
En este paso, exploraremos el comando git reflog
, que es una herramienta poderosa para recuperar confirmaciones (commits) o ramas perdidas. El reflog
(registro de referencias) registra las actualizaciones de las puntas de las ramas y otras referencias en el repositorio local. Esto significa que registra casi todos los cambios que realizas en tu repositorio, incluyendo confirmaciones, fusiones (merges), rebase y hasta la eliminación de ramas.
Primero, asegúrate de estar en el directorio de tu proyecto:
cd ~/project/my-time-machine
Ahora, creemos una nueva rama que eliminaremos más adelante. Esto nos dará algo para buscar en el reflog
.
git branch feature/new-feature
Este comando crea una nueva rama llamada feature/new-feature
que apunta a la confirmación actual. Verifiquemos que exista:
git branch
Ahora deberías ver ambas ramas:
* master
feature/new-feature
Ahora, eliminemos la rama feature/new-feature
utilizando la bandera -d
, que es una eliminación "segura" (evita la eliminación si la rama tiene cambios no fusionados).
git branch -d feature/new-feature
Deberías ver una salida que confirme la eliminación:
Deleted branch feature/new-feature (was <commit-id>).
Reemplaza <commit-id>
con el ID de confirmación real mostrado en tu terminal.
Ahora, comprobemos el reflog
para ver si se registró la eliminación.
git reflog
La salida mostrará un historial de acciones. Deberías ver una entrada relacionada con la eliminación de la rama, similar a esta (la salida exacta puede variar):
<commit-id> HEAD@{0}: branch: deleted feature/new-feature
<commit-id> HEAD@{1}: branch: Created from <another-commit-id>
... (other reflog entries)
La entrada del reflog
HEAD@{0}: branch: deleted feature/new-feature
indica que la rama feature/new-feature
fue eliminada. El HEAD@{0}
se refiere a la acción más reciente. Esto demuestra que, aunque la rama ya no aparece en git branch
, su eliminación se registra en el reflog
, lo que la hace potencialmente recuperable.
Comprender git reflog
es crucial porque actúa como una red de seguridad. Si accidentalmente eliminas una rama o pierdes confirmaciones debido a un rebase u otra operación, el reflog
puede ayudarte a encontrar el ID de confirmación que necesitas para restaurar tu trabajo.