Navegar entre Ramas y el Puntero HEAD
Aprende cómo funciona el puntero especial HEAD en Git, la diferencia entre git switch y git checkout, y cómo manejar de forma segura los cambios no confirmados al saltar de una rama a otra.
¿Qué es el puntero HEAD?
En Git, HEAD es un puntero especial que hace referencia a: «dónde te encuentras parado en este momento». Casi siempre, HEAD apunta al nombre de la rama activa actual (por ejemplo: HEAD -> main), y la rama apunta a su último commit.
Cuando cambias de rama, Git mueve el puntero HEAD hacia la nueva rama y actualiza automáticamente los archivos físicos de tu disco para que coincidan exactamente con la instantánea de esa rama.
La Modernización de Git: git switch vs. git checkout
Durante más de una década, el comando git checkout se utilizó tanto para cambiar de ramas como para descartar cambios en archivos. Para eliminar esa confusión, a partir de Git 2.23 se separaron estas dos funciones en comandos especializados:
| Comando Moderno (Recomendado) | Comando Antiguo (Histórico) | Acción que realiza |
|---|---|---|
git switch <rama> |
git checkout <rama> |
Cambiar a una rama existente. |
git switch -c <rama> |
git checkout -b <rama> |
Crear una rama nueva y cambiarse a ella. |
git restore <archivo> |
git checkout -- <archivo> |
Descartar cambios no guardados en un archivo. |
¿Qué pasa si intentas cambiar de rama con cambios sin guardar?
Si modificas archivos y tratas de hacer git switch sin haber hecho commit, Git te protegerá con este error:
error: Your local changes to the following files would be overwritten by checkout:
Please commit your changes or stash them before you switch branches.
Tienes tres opciones seguras:
- Hacer commit: Si el código está listo, haz
git add . && git commit -m "...". - Guardar en el baúl temporal (Stash): Ejecuta
git stashpara congelar tus cambios temporalmente y recuperarlos luego. - Descartar los cambios: Si eran pruebas desechables, ejecuta
git restore ..
⚡ Navegación Fluida entre Ramas en Terminal
Ejemplo de navegación entre ramas principales y de características:
# 1. Cambiar a una rama ya existente:
git switch develop
# 2. Volver a la rama anterior en la que estabas (atajo con guion):
git switch -
# 3. Ver exactamente a qué commit está apuntando HEAD:
git log -1 --oneline
# 4. Desprender HEAD a un commit específico para inspeccionar el pasado:
git checkout a1b2c3d
# (HEAD detached at a1b2c3d: modo de solo lectura/inspección)
# 5. Volver a la seguridad de tu rama principal:
git switch main
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de Git & GitHub Profesional y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.