Aprende a usar el comando “git switch” en 2 minutos: la guía definitiva

Vero Isoardi
Unagi
Published in
3 min readMar 13, 2023

El comando switch es un comando de git experimental (añadido en la versión 2.23) que permite moverse entre ramas. Se usa de la forma git switch <branch> donde branch es el nombre de la rama local o remota a la que nos queremos mover.

$ git switch <branch>

Antes de la aparición del comando switch, esta acción debía realizarse con el comando checkout. El problema con este comando es que tiene muchas responsabilidades asignadas, se puede usar para moverse entre ramas, deshacer cambios, restaurar archivos, etc.; en cambio, el comando switch solo se puede usar para crear ramas y moverse entre ellas.

Para crear una rama y moverse a la misma en un solo paso debemos usar el flag -c 👇

$ git switch -c <new-branch>

El equivalente usando el comando checkout es el flag -b.

Con los flags anteriores en mayúscula (C o B según el comando) se crea la rama y se mueve a la misma, pero si la rama ya existe la devuelve al punto de inicio, es decir, vuelve al momento en el que se creó la misma.

Para usar el comando switch puede haber cambios locales, pero la operación será abortada si hay conflictos en la rama a la que nos queremos mover.
Esto se puede evitar usando alguno de los siguientes flags: --discard-changes, --force(-f) o --merge (-m). El primero y el segundo hacen exactamente lo mismo, de hecho --force está definido como un alias de --discard-changes, primero son eliminados los cambios locales y luego se mueve a la rama nombrada; usando el flag --merge, git intenta unir los archivos modificados de la rama original con los de la rama a la que nos queremos mover y luego de resolver los conflictos se mueve a la rama indicada.

Para volver a la rama anterior se puede usar el guión (-), de la misma forma que se hace con checkout.

$ git switch -

Ejemplos

Comenzamos moviendonos a la rama main

$ git switch main

Luego de trabajar un rato sobre main nos damos cuenta de que estamos trabajando en la rama equivocada e intentamos movernos a la rama correcta

$ git switch correct-branch

El problema es que main ahora tiene archivos modificados localmente que “chocan” con los que están en correct-branch y al no haber usado ningún flag de los anteriormente mencionados (-f o -m), el switch fallará.
Como en este caso queremos mantener los cambios, repetiremos el comando usando el flag -m, que intentará mergear los cambios de la rama main a los de la rama correct-branch.

$ git switch -m correct-branch

Para volver a main (la rama en la que estabamos anteriormente) solo tenemos que usar el guión (-).

$ git switch -

Y para crear una rama desde un commit específico debemos usar el flag -c y especificar el commit de alguna de las formas que nos permite Git.

$ git switch -c new-branch HEAD~3

Los comandos git restore y git switch buscan quitarle responsabilidades a git checkout y resolverlas de forma más intuitiva. De todas maneras, como vimos git checkout mantiene las funcionalidades para no romper la compatibilidad entre versiones.

¿Conocías este comando? ¿Cuál vas a usar de ahora en adelante?

--

--

Vero Isoardi
Unagi
Writer for

Desarrolladora Ruby on Rails en Unagi. Estudiante de sistemas y diseño multimedia. Súper curiosa. ¿Soy realmente yo si no estoy preguntando el porqué de todo?🤓