Sinopsis
git switch [-c <new-branch>] [--detach] <branch>
Descripción
El comando git switch, introducido en Git 2.23, es un reemplazo enfocado para la mitad de cambio de branch de git checkout. Solo cambia branches (o crea y cambia en un paso). Se rehúsa a operar sobre archivos individuales, eliminando la fuente más común de errores de checkout. Si estás aprendiendo Git hoy, prefiere git switch para branches y git restore para archivos.
Como checkout, switch actualiza HEAD, el index y el árbol de trabajo para coincidir con el branch destino. Se rehusará a cambiar si hacerlo aplastaría cambios no commiteados, a menos que pases --force.
En el uso diario, git switch se integra con alias de shell. Para depurar, ejecuta con GIT_TRACE=1.
Entender cómo git switch interactúa con el modelo de datos de Git ayuda a predecir resultados y a recuperarse de errores.
Opciones comunes
| Opción | Descripción |
|---|---|
-c <name>, --create | Crea un nuevo branch y cambia a él. |
-C <name>, --force-create | Crea o resetea un branch y cambia a él. |
--track | Configura seguimiento con un branch remoto. |
--detach | Cambia a un commit en modo HEAD desconectado. |
- | Cambia al branch anterior (como cd -). |
--discard-changes | Descarta cambios locales al cambiar. |
-m, --merge | Merge three-way de cambios locales al cambiar. |
Ejemplos
git switch main
# Mueve al branch main
git switch -c feature/search
# Crea y cambia a un nuevo branch
git switch -
# Vuelve al branch anterior
git switch --detach v3.0.0
# Inspecciona un tag en modo desconectado
Errores comunes
Olvidar pasar -c al intentar crear un nuevo branch deja a Git buscando un branch existente y produce un error. Recuerda: switch solo es para branches; usa restore para archivos. Otro error es asumir que git switch - alterna entre dos branches indefinidamente; alterna entre el actual y el anterior, no entre los dos últimos en general.
Comandos relacionados
git checkout, git restore, git branch