Saltar al contenido principal
Git

Solución: Git detached HEAD — cómo salir sin perder los commits

Git te avisa de que estás en 'detached HEAD' y cualquier commit que hagas puede perderse. Qué significa, cómo llegaste aquí y cómo volver a una rama de forma segura.

Error: You are in 'detached HEAD' state

¿Por qué ocurre?

HEAD normalmente apunta a una rama (ej: main). En estado 'detached HEAD', HEAD apunta directamente a un commit específico, no a ninguna rama. Ocurre al hacer `git checkout <hash>`, `git checkout <tag>`, o al explorar el historial. Los commits que hagas en este estado no pertenecen a ninguna rama y Git los puede eliminar con el garbage collector.

Solución paso a paso

Opción A — Volver a la rama principal sin guardar nada:

# Si no hiciste commits en detached HEAD y solo quieres volver
git checkout main
# o
git switch main

Opción B — Guardar el trabajo en una rama nueva:

# Si hiciste commits en detached HEAD y quieres conservarlos
git switch -c mi-rama-nueva
# Equivalente a:
git checkout -b mi-rama-nueva

# Ahora tu trabajo está seguro en 'mi-rama-nueva' # Puedes fusionarla a main cuando quieras: git switch main git merge mi-rama-nueva

Opción C — Aplicar los commits de detached HEAD a main:

# Anota el hash del commit que quieres conservar
git log --oneline  # copia el hash, ej: a1b2c3d

# Vuelve a main git switch main

# Cherry-pick del commit git cherry-pick a1b2c3d

Cómo comprobar en qué estado estás:

git status
# "HEAD detached at a1b2c3d" → en detached HEAD
# "On branch main" → en una rama normal

git branch # El asterisco (*) sin nombre de rama confirma detached HEAD

Caso común — explorar una versión antigua y volver:

# Explorar un commit antiguo (esto te mete en detached HEAD)
git checkout abc1234

# Cuando termines de explorar, vuelve a la rama git switch - # vuelve a la rama anterior # o git switch main

Cómo evitarlo en el futuro

Usa `git switch` en lugar de `git checkout` para cambiar de rama — es más explícito y avisa mejor del estado. Si quieres explorar un commit antiguo sin riesgo, crea una rama primero: `git switch -c explorar-version-antigua abc1234`.

GitErrorHEADramascommits

¿Quieres que una IA te ayude? Genera el prompt perfecto para tu error:

Generador de Prompts

¿Necesitas desarrollo a medida?

Apps web, IA, módulos ERP — cuéntame tu proyecto.