¿Qué es el error Git Detached HEAD y por qué ocurre?
El estado Detached HEAD (cabeza desacoplada) en Git ocurre cuando tu indicador HEAD apunta directamente a un commit específico en lugar de a una rama (branch). Esto suele suceder al ejecutar comandos como git checkout [hash-del-commit] para revisar una versión anterior del código. Aunque puedes ver y editar los archivos, cualquier cambio que realices y guardes no pertenecerá a ninguna rama, lo que puede causar pérdida de trabajo si cambias de rama sin precaución.
Causas comunes del estado Detached HEAD
- Navegación directa a un commit antiguo mediante su hash SHA.
- Checkout accidental de una etiqueta (tag) específica en lugar de una rama.
- Errores en scripts de integración continua (CI/CD) que clonan repositorios en estados específicos.
Método 1: Crear una nueva rama temporal para guardar los cambios
Si ya has hecho modificaciones estando en estado Detached HEAD y quieres conservarlas, el método más seguro es crear una nueva rama en ese mismo instante.
- Ejecuta el siguiente comando para crear y cambiarte a una nueva rama con tus cambios actuales:
git checkout -b mi-rama-recuperada - Añade tus archivos modificados al área de preparación:
git add . - Realiza el commit correspondiente:
git commit -m "Guardando trabajo en rama recuperada" - Ahora ya puedes fusionar esta rama con tu rama principal (por ejemplo,
mainomaster) usandogit merge.
Método 2: Volver a la rama principal si no necesitas los cambios
Si solo estabas inspeccionando el código y no has realizado ningún commit importante que desees conservar, puedes descartar este estado y regresar a tu rama de trabajo anterior de forma inmediata.
- Identifica el nombre de tu última rama de trabajo (por ejemplo,
main). - Ejecuta el comando de retorno:
git checkout main - Nota: Si Git te advierte sobre cambios sin guardar que se sobrescribirán y no los necesitas, puedes descartarlos con
git reset --hard(advertencia: esto borrará todo el trabajo no guardado en el directorio de trabajo).