git switch

Ramas y fusiones

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>
[ ] opcional| o<arg> valor a sustituir... repetible--flag opción

Opciones

Haz clic en una opción para desplegarla

Principiante (2)

Crea una rama nueva en el commit actual (o en un punto de inicio dado) y cámbiate a ella.

RecomendadoCrear y cambiar en un paso

Ejemplo

git switch -c feature/login

Cambia aunque sobrescriba cambios sin confirmar; esos cambios se descartan.

No recomendadoBorra en silencio las ediciones sin confirmar; mejor guárdalas con stash

Ejemplo

git switch --discard-changes main

Intermedio (2)

Como -c, pero si la rama ya existe se restablece al punto de inicio.

Cuando haga faltaRestablece una rama existente — sus commits antiguos se pierden

Ejemplo

git switch -C feature/login

Cámbiate a un commit en lugar de a una rama (HEAD separado), p. ej. para revisar una versión antigua.

Cuando haga faltaRevisar un commit antiguo sin mover ninguna rama

Ejemplo

git switch --detach HEAD~1

Avanzado (1)

Crea una rama nueva sin historial y quita del disco los archivos con seguimiento.

Cuando haga faltaHistorial separado, p. ej. una rama gh-pages

Ejemplo

git switch --orphan docs

Elegir la opción adecuada

switch frente a checkout

Las mismas acciones de rama, antes y ahora

ComandoEquivalente en git checkout
git switch maingit checkout main
git switch -c feature/logingit checkout -b feature/login
git switch --detach HEAD~1git checkout HEAD~1
git switch -git checkout -

Ejemplos

Cambiar a una rama

git switch main

Ir a main.


Crear y cambiar

git switch -c feature/login

Crea 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/login

Si solo existe origin/feature/login, se crea una rama local que la sigue.

Ejemplos de flujos de trabajo

1
git switch main

Empezar desde main

2
git pull

Obtener el main más reciente

3
git switch -c feature/login

Crear tu rama

1
git stash

Aparcar las ediciones

2
git switch main

Cambiar

3
git switch - && git stash pop

Volver 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

A:

Para ramas hace el mismo trabajo, pero con opciones más claras y sin poder tocar archivos por accidente.

A:

Git 2.23 o posterior.

A:

Te siguen a la nueva rama, salvo que haya conflicto — entonces el cambio se rechaza.