¿Qué es el Error 'Detached HEAD' en Git y por qué ocurre?
El estado Detached HEAD (cabeza desacoplada) en Git ocurre cuando realizas un git checkout o git switch apuntando directamente al hash de un commit específico en lugar de a una rama (branch). En este punto, tu repositorio se encuentra en un estado donde los nuevos commits que realices no pertenecerán a ninguna rama oficial, lo que puede provocar la pérdida de trabajo si cambias de rama sin precaución.
Causas principales de la HEAD desacoplada
- Navegar directamente a un commit antiguo usando su hash SHA-1 (ej.
git checkout a1b2c3d). - Hacer un checkout de una etiqueta (tag) específica para pruebas o revisión de código.
- Problemas o conflictos durante la ejecución de ciertos comandos de fusión (merge) o rebase.
Método 1: Crear una nueva rama temporal para guardar los cambios actuales
Si te encuentras en estado de Detached HEAD y has realizado nuevos commits que no quieres perder, debes crear una nueva rama inmediatamente para aferrar esos cambios al historial.
- Ejecuta el siguiente comando para crear y cambiarte a una nueva rama temporal:
git checkout -b rama-recuperadaogit switch -c rama-recuperada. - Verifica que tus cambios estén seguros listando las ramas con
git branch. - Fusiona esta rama con tu rama principal (por ejemplo,
mainomaster) cuando lo consideres oportuno mediante ungit merge.
Método 2: Volver a la rama principal descartando cambios no guardados
Si no has realizado ningún commit nuevo y solo estabas inspeccionando el código de un commit anterior, la solución es simplemente regresar a tu rama de trabajo habitual.
- Asegúrate de no tener cambios locales sin guardar o utiliza
git stashsi deseas conservarlos temporalmente. - Regresa a tu rama principal ejecutando:
git checkout main(o el nombre de tu rama de trabajo). - Confirma que el estado se ha resuelto ejecutando
git statuspara verificar que ya no aparece el mensaje de HEAD desacoplada.