Sinopsis
git checkout [<branch>]
git checkout -b <new-branch> [<start-point>]
git checkout [<tree-ish>] -- <file>...
Descripción
El comando git checkout históricamente hace dos cosas no relacionadas: cambiar branches y restaurar archivos. Por esta sobrecarga, Git moderno introdujo git switch para operaciones de branch y git restore para operaciones de archivo. git checkout sigue funcionando y permanece popular, pero se anima a los nuevos usuarios a aprender los comandos divididos más nuevos.
Cuando se le da un nombre de branch, git checkout mueve HEAD a ese branch y actualiza el árbol de trabajo. Cuando se le da un path, sobrescribe el archivo del árbol de trabajo con la versión del index (o de un commit especificado). El flag -b crea un nuevo branch y cambia a él en un paso.
En el uso diario, git checkout se integra con alias de shell. Para depurar, ejecuta con GIT_TRACE=1.
Entender cómo git checkout interactúa con el resto del modelo de datos de Git rinde dividendos al predecir resultados.
Opciones comunes
| Opción | Descripción |
|---|---|
-b <name> | Crea y cambia a un nuevo branch. |
-B <name> | Crea o resetea un branch y cambia a él. |
--track | Configura el seguimiento de un branch remoto. |
--detach | Hace checkout de un commit en estado HEAD desconectado. |
-- <path> | Trata los argumentos siguientes como paths, no branches. |
-f, --force | Descarta cambios locales al cambiar. |
-p, --patch | Selecciona hunks interactivamente para restaurar. |
Ejemplos
git checkout main
# Cambia al branch main
git checkout -b feature/api origin/develop
# Crea un nuevo branch que rastrea origin/develop
git checkout HEAD -- src/config.js
# Descarta cambios locales a un único archivo
git checkout v1.2.3
# HEAD desconectado en un tag específico
Errores comunes
Ejecutar git checkout <file> sobrescribe silenciosamente tus ediciones locales sin posibilidad de deshacer. Usa git restore en su lugar; tiene un nombre más claro. El estado HEAD desconectado sorprende a los principiantes: los commits hechos ahí no pertenecen a ningún branch y pueden perderse al cambiar. Si quieres conservarlos, crea un branch primero.
Comandos relacionados
git switch, git restore, git branch, git reset