¿Qué es el estado HEAD detached en Git?
El error o estado de HEAD detached (cabeza desconectada) ocurre en Git cuando el puntero HEAD, que normalmente apunta a una rama activa (como main o master), se encuentra apuntando directamente a un commit específico en lugar de a un nombre de rama. Esto suele suceder al ejecutar comandos como git checkout [hash-del-commit].
Causas principales de este problema
Las razones más comunes por las que te encuentras en este estado incluyen:
- Inspeccionar el código de un commit antiguo utilizando su hash.
- Olvidar crear una nueva rama antes de empezar a trabajar sobre un commit pasado.
- Errores al cambiar de rama rápidamente en entornos de integración continua o flujos de trabajo complejos.
Método 1: Volver a la rama anterior sin guardar cambios
Si estabas explorando el código y no has realizado ningún cambio importante que necesites conservar, la solución es sumamente sencilla.
- Abre tu terminal en el directorio del repositorio.
- Ejecuta el comando para regresar a tu rama de trabajo habitual, por ejemplo:
git checkout mainogit switch main. - Verifica que todo esté en orden ejecutando
git status.
Método 2: Guardar los cambios actuales creando una nueva rama
Si realizaste modificaciones estando en el estado de HEAD detached y no quieres perder tu progreso, debes crear una rama nueva en ese mismo instante.
- Crea y cambia a una nueva rama utilizando el comando:
git checkout -b nueva-rama-trabajo. git switch -c nueva-rama-trabajo- Ahora tus cambios están seguros en esta rama y puedes hacer
git add .ygit commit -m "Mis cambios rescatados"con total normalidad.
O su equivalente moderno:
Método 3: Fusionar los cambios con una rama existente mediante Git Stash
Si necesitas mover tus avances actuales a una rama ya existente sin perder el historial:
- Guarda temporalmente tus cambios con
git stash. - Cambia a la rama de destino:
git checkout main. - Recupera tus cambios aplicando la pila guardada:
git stash pop. - Resuelve cualquier conflicto de fusión si lo hubiera y haz commit de tus cambios.