¿Qué es el error Git 'Detached HEAD' y por qué ocurre?
En el control de versiones con Git, la etiqueta HEAD apunta normalmente a una rama específica en la que estás trabajando. Sin embargo, cuando ejecutas comandos como git checkout o git switch sobre un commit específico en lugar de una rama, el HEAD se separa. Esto significa que estás en un estado de 'cabeza desacoplada', donde cualquier commit que hagas no pertenecerá a ninguna rama y podría perderse al cambiar de contexto.
Causas principales del estado Detached HEAD
- Cambiar directamente a un commit antiguo usando su hash SHA.
- Restaurar un tag o etiqueta en lugar de crear una rama a partir de él.
- Errores humanos al utilizar interfaces gráficas (GUI) de Git sin verificar la rama activa.
Método 1: Crear una rama temporal para conservar los cambios nuevos
Si has realizado nuevos commits mientras estabas en estado Detached HEAD y no quieres perderlos, debes crear una nueva rama inmediatamente.
- Ejecuta el siguiente comando para crear y cambiarte a una nueva rama que guarde tu trabajo actual:
git checkout -b nueva-rama-trabajo - Verifica que la rama se ha creado correctamente y que tus cambios están seguros ejecutando:
git status
Método 2: Volver a una rama existente descartando los cambios temporales
Si no realizaste ningún cambio importante y solo estabas inspeccionando código antiguo, puedes regresar a tu rama principal de forma segura.
- Identifica tu rama anterior ejecutando:
git brancho revisando el historial congit reflog. - Vuelve a la rama de desarrollo principal con:
git checkout main(o el nombre de tu rama habitual).