cambiar-ramas-git-con-switch

Cambiando de rama con Git Switch

  • 4 min

El comando git switch es la instrucción para cambiar el contexto de trabajo entre diferentes ramas dentro de Git***.

Ya hemos visto cómo crear y borrar ramas. El siguiente paso es aprender a cambiar la rama en la que estamos trabajando.

En esta entrada analizaremos git switch, la herramienta estándar para alternar entre ramas de forma.

Antiguamente, si querías cambiar de rama en Git, usabas git checkout. El problema, como vimos en el artículo sobre git restore, es que checkout servía para muchas cosas: cambiar de rama, restaurar archivos, viajar a commits sueltos…

En la versión Git 2.23 (2019), los desarrolladores de Git decidieron poner orden y crearon un comando específico para la tarea más común en el flujo de trabajo: cambiar de rama.

Cambiando de rama

La función básica es mover tu puntero HEAD y actualizar tu directorio de trabajo para que coincida con la rama destino.

Si estás en main y quieres pasar a develop:

git switch develop
Copied!

¿Qué ocurre?

  1. Git mueve el puntero HEAD para que apunte a la etiqueta feature.
  2. Git actualiza los archivos de tu carpeta (Working Directory) para que sean idénticos a la instantánea guardada en el último commit de feature.

Si tienes archivos abiertos en tu editor de código, verás cómo cambian instantáneamente ante tus ojos al ejecutar el comando.

El botón “Volver” (-)

Este es un truco que ahorra tiempo. Imagina que estás trabajando en feature/login y necesitas ir un momento a main para comprobar algo, y luego volver a feature/login.

En lugar de escribir los nombres todo el rato, puedes usar el guion:

git switch -
Copied!

Este comando significa: “Vuelve a la rama en la que estaba justo antes de esta”. Es como el botón “Canal anterior” del mando de la tele o el cd - de Linux.

Crear y cambiar a la vez

En el artículo anterior vimos que git branch nueva-rama creaba la rama pero te dejaba “tirado” en la antigua. Tenías que hacer dos pasos.

El flujo habitual es crear una rama y saltar a ella inmediatamente para empezar a trabajar. Con git switch, usamos la opción -c (create):

git switch -c feature
Copied!

¿Qué ocurre?

  1. Crea la rama feature en el commit actual.
  2. Te cambia automáticamente a ella.

¿Qué pasa con mis cambios sin guardar?

Si tienes archivos modificados e intentas cambiar de rama:

  1. Si no hay conflicto: (El archivo que has tocado es igual en ambas ramas) Git se lleva tus cambios a la nueva rama. Es muy cómodo.
  2. Si hay conflicto: (El archivo que has tocado es diferente en la rama destino) Git abortará la operación y te avisará:
error: Your local changes to the following files would be overwritten by checkout:
        config.js
Please commit your changes or stash them before you switch branches.
Aborting
Copied!

Git nos protege de perder trabajo. Para solucionarlo, tienes dos opciones: hacer un commit en tu rama actual o usar git stash (que veremos más adelante) para guardarlos temporalmente.