git switch
Cambia de rama
El comando 'git switch' te lleva a otra rama: HEAD la sigue y tus archivos de trabajo cambian para coincidir con esa rama. Con -c crea antes la rama. Se añadió en Git 2.23 para asumir la parte de git checkout que cambia de rama, con nombres más claros y valores por defecto más seguros — se niega a cambiar si eso sobrescribiera tus ediciones sin confirmar.
Sinopsis
git switch [<options>] <branch>
git switch [<options>] (-c|-C) <new-branch> [<start-point>]
git switch [<options>] --detach [<start-point>]
git switch [<options>] --orphan <new-branch>Opciones
Elegir la opción adecuada
switch frente a checkout
Las mismas acciones de rama, antes y ahora
| Comando | Equivalente en git checkout |
|---|---|
git switch main | git checkout main |
git switch -c feature/login | git checkout -b feature/login |
git switch --detach HEAD~1 | git checkout HEAD~1 |
git switch - | git checkout - |
Ejemplos
Cambiar a una rama
git switch mainIr a main.
Crear y cambiar
git switch -c feature/loginCrea feature/login y cámbiate a ella.
Rama anterior
git switch -Vuelve a la rama en la que estabas antes.
Seguir una rama remota
git switch feature/loginSi solo existe origin/feature/login, se crea una rama local que la sigue.
Ejemplos de flujos de trabajo
git switch mainEmpezar desde main
git pullObtener el main más reciente
git switch -c feature/loginCrear tu rama
git stashAparcar las ediciones
git switch mainCambiar
git switch - && git stash popVolver y restaurar las ediciones
Solución de problemas
error: Your local changes to the following files would be overwritten by checkout
Causa: Una edición sin confirmar entra en conflicto con la otra rama
Confírmala o guárdala con stash antes, o usa --discard-changes para descartarla
fatal: invalid reference: feature/x
Causa: La rama no existe
Créala con git switch -c, o ejecuta git fetch si existe en origin
fatal: a branch is expected, got commit
Causa: Diste un commit, no una rama
Usa git switch --detach <commit>
Consejos y trampas
Buenas prácticas
- ✓Usa git switch para ramas y git restore para archivos en lugar de git checkout.
- ✓Mantén un estado limpio (commit o stash) antes de cambiar de rama.
- ✓Haz pull de main antes de crear una rama nueva a partir de ella.
Errores comunes
- ✗Cambiar de rama con ediciones sin confirmar y sorprenderse de que te sigan a la nueva rama.
- ✗Usar git switch <commit> — los commits necesitan --detach.
- ✗Olvidar -c y obtener "invalid reference" para una rama que aún no existe.
Preguntas frecuentes
Para ramas hace el mismo trabajo, pero con opciones más claras y sin poder tocar archivos por accidente.
Git 2.23 o posterior.
Te siguen a la nueva rama, salvo que haya conflicto — entonces el cambio se rechaza.