Saltar al contenido principal
InicioTutorialesGit

Cambiar de rama Git: Una guía con ejemplos prácticos

Aprende a cambiar una rama en Git utilizando git switch y entiende las diferencias entre git switch y git checkout.
Actualizado 12 sept 2024  · 8 min leer

Ramas en Git representan líneas de desarrollo independientes, lo que permite a los desarrolladores trabajar simultáneamente en varias características o versiones de un proyecto.

Las ramas Git proporcionan una forma estructurada de gestionar los cambios en el código, permitiendo una integración fluida de nuevas funciones, correcciones de errores e ideas experimentales sin alterar el código base principal. 

Diagrama de un proyecto con tres ramas

Tradicionalmente, utilizábamos el git checkout comando para pasar de una rama a otra. Sin embargo, el comando checkout nos permite hacer mucho más que simplemente cambiar de rama, lo que provoca cierta confusión y puede llevar a errores.

Introducido en Git 2.23 en agosto de 2019, el comando git switch comando proporciona una forma más intuitiva de cambiar y crear nuevas ramas.

Cambiar y crear ramas con Git Switch

En los proyectos complejos, las prioridades cambian constantemente, y el flujo de trabajo suele ser no lineal. Normalmente, cada rama se centra en cambios específicos, lo que nos permite trabajar simultáneamente en varias funciones nuevas o correcciones de errores, cada una de las cuales se implementa en su rama.

Hay varias razones por las que podríamos necesitar pausar el trabajo en una función y desviar nuestra atención a otra rama, como por ejemplo:

  • A la espera de una revisión del código.
  • Encontrarte con un obstáculo y necesitar ayuda de un compañero.
  • Abordar un hotfix que requiere atención inmediata.

Pasar de una rama a otra con eficacia es clave para que el desarrollo sea fluido y para que los cambios acaben donde deben. Con múltiples tareas y colaboración en equipo, tener una forma sencilla y fiable de cambiar de rama es importante.

Para cambiar a una rama existente utilizando el comando switch, hacemos lo siguiente:

git switch <branch-name>

En el comando anterior, debe sustituirse por el nombre de la rama a la que queremos cambiar. Digamos que queremos trabajar en una nueva función ubicada en una rama existente llamada feature-x, entonces utilizaríamos el comando:

git switch feature-x

Conviértete en Ingeniero de Datos

Desarrolla tus habilidades en Python para convertirte en un ingeniero de datos profesional.

Empieza Gratis

Averiguar los nombres de las sucursales existentes

Si queremos listar las ramas disponibles, utilizamos el comando git branch. La rama actual se mostrará con un asterisco junto a ella. Por ejemplo, si tenemos tres ramas locales llamadas main, feature-x, y bug-z, y actualmente estamos en la rama main, la salida sería:

* main
feature-x
bug-z

Cambiar a una sucursal remota

El comando anterior nos permite cambiar a una rama que ya tenemos en nuestra máquina local. Para pasar a una rama del repositorio remoto, necesitamos crear una versión local de la misma utilizando el siguiente comando:

git switch -c <local-branch-name> origin/<remote-branch-name>

Aquí, es el nombre que queremos que tenga la rama localmente, mientras que es el nombre de la rama remota. En general, queremos utilizar el mismo nombre para evitar confusiones. Digamos que no tenemos la rama feature-x localmente. Entonces podemos crear una versión local y cambiar a ella, así:

git switch -c feature-x origin/feature-x

Cuando se utiliza el mismo nombre, Git proporciona una abreviatura del comando utilizando la opción --track. Así que el comando anterior equivale a

git switch --track origin/feature-x

Para listar las ramas remotas, podemos utilizar el comando git branch -r.

El repositorio local no hace un seguimiento automático de las ramas remotas. Por lo tanto, antes de listar o cambiar a una rama remota, es importante actualizar el repositorio local utilizando git fetch.

Crear una nueva rama y cambiar a ella

Queremos crear una rama totalmente nueva para empezar a trabajar en una nueva función. En este caso, podemos utilizar la bandera -c:

git switch -c <new-branch-name>

Sustituimos por el nombre de la sucursal. Por ejemplo, para crear una rama llamada feature-y hacemos lo siguiente:

git switch -c feature-y

Volver a la rama anterior

A menudo ocurre que, después de cambiar de rama para hacer algún trabajo, queremos volver a la rama en la que estábamos trabajando anteriormente. Git proporciona una forma abreviada de hacerlo mediante el comando

git switch -

Interruptor Git vs. Comprobación Git

El comando git checkout ha estado en Git desde el principio. Antes de la introducción de git switch en 2019, git checkout era el comando que se utilizaba para cambiar entre ramas. Sin embargo, el alcance del comando git checkout va más allá de la simple navegación entre ramas. Aquí tienes un desglose de las diferencias:

  • git switch: Su finalidad es proporcionar una forma más intuitiva de cambiar y crear nuevas ramas. Su objetivo es simplificar el conjunto de comandos y reducir la confusión.
  • git checkout: Un comando más versátil que puede utilizarse para cambiar de rama, pero también para comprobar archivos y restaurar el contenido de diferentes confirmaciones o ramas.

El diseño de git switch hace que sea más difícil sobrescribir cambios accidentalmente. Tiene una sintaxis más explícita para cambiar de rama y crear ramas nuevas.

Como git checkout hace varias cosas (cambiar de rama, restaurar archivos, etc.), hay más posibilidades de cometer errores al utilizarlo.

Interruptor Git: Errores comunes

Al gestionar sucursales, puedes encontrarte con algunos problemas comunes. Una de ellas es intentar crear una rama que ya existe localmente. Otro problema frecuente se produce al intentar cambiar de rama con cambios no comprometidos. Empecemos por explicar la primera.

La rama ya existe localmente

Cada sucursal local necesita un nombre único. Puedes utilizar git switch para crear ramas locales de dos formas:

1. Para rastrear una rama remota:

git switch --track origin/<branch-name>

2. Para crear una nueva sucursal local:

git switch -c <branch-name>

En ambos casos, si ya existe una rama local llamada , Git lanzará un error diciendo:

fatal: a branch named '<branch-name>' already exists

No podemos crear una rama con el mismo nombre que otra rama local

En este caso, podemos pasar a la rama sin crearla utilizando git switch .

La rama actual tiene cambios no comprometidos

Git no nos permitirá cambiar de rama si la rama actual tiene cambios no comprometidos que serían sobrescritos por el cambio. En este caso, Git lanzará un error diciendo:

Please commit your changes or stash them before you switch branches.

<code data-mce-selected=

Como indica el mensaje, para superar esta situación tenemos que confirmar primero nuestros cambios o almacenarlos. Si los cambios están listos para ser enviados al repositorio, debemos enviarlos utilizando:

git commit -m "Commit message"

Si queremos conservar los cambios pero aún no estamos preparados para confirmarlos, podemos guardarlos temporalmente utilizando el comando git stash comando:

git stash

Si escondemos los cambios antes de cambiar de rama y queremos volver a aplicarlos cuando volvamos a la rama original, podemos utilizar el comando git stash pop.

Alternativamente, también podemos decidir descartar los cambios utilizando la bandera --discard-changes:

git switch --discard-changes <branch-name>

Ten cuidado antes de utilizar esta última opción, ya que los cambios se borrarán permanentemente.

Uso avanzado del interruptor Git

Cuando necesites crear ramas a partir de puntos concretos del historial de tu proyecto o manejar escenarios especiales, git switch te ofrece funciones avanzadas para satisfacer estas necesidades.

Ramificación desde un punto concreto

Por defecto, al crear una rama con git switch, el estado inicial de la nueva rama será el HEAD de la rama en la que estamos actualmente.

Por defecto, al crear una rama se parte del HEAD actual

Imagina que queremos iniciar una nueva rama a partir de una confirmación previa concreta. Cada confirmación se identifica mediante un único , que podemos utilizar con el comando git switch para crear una nueva rama a partir de esa confirmación. He aquí cómo hacerlo:

switch -c feature-y <hash>

Sustituye por el hash real de la confirmación.

Podemos bifurcarnos a partir de una confirmación específica proporcionando el hash de la confirmación

Cambiar a cabeza separada

Si queremos explorar o experimentar con una confirmación concreta sin afectar a la rama actual ni crear una rama nueva, podemos utilizar una cabeza separada con el comando

git switch --detach <hash>

Cambiar a cabeza separada

Al separar la cabeza, podemos inspeccionar con seguridad el estado del repositorio en una confirmación concreta, ejecutar pruebas o hacer cambios temporales sin riesgo de que esos cambios se confirmen accidentalmente en la rama de trabajo actual. Los casos de uso más comunes son:

  • Ver un estado antiguo: Si queremos inspeccionar o probar una confirmación anterior sin hacer cambios en la rama actual, podemos pasar a esa confirmación en estado separado.
  • Cambios temporales: Si queremos experimentar con cambios sin afectar a ninguna rama, podemos hacer esos cambios en un estado de cabeza separada. Ten en cuenta que los nuevos commits que hagamos en este estado no pertenecerán a ninguna rama, y puede que tengamos que crear una rama nueva si queremos conservar esos commits.
  • Fines de construcción/prueba: A veces, necesitamos construir o probar software en un commit específico. Pasar a un estado HEAD separado en esa confirmación nos permite hacerlo sin ningún impacto en la estructura de ramas del repositorio.

Forzar un cambio

Hemos aprendido que Git no nos permite cambiar de rama si hay cambios no comprometidos que puedan entrar en conflicto con la rama de destino. Si estamos seguros de que queremos descartar esos cambios y proceder al cambio, podemos forzarlo utilizando la opción -f, así:

git switch -f <branch-name>

Hay que tener en cuenta algunas advertencias importantes. 

  • Cualquier cambio no comprometido se perderá sin previo aviso, pudiendo provocar la pérdida de trabajo si esos cambios no se han guardado en otro lugar. 
  • Utilizar indiscriminadamente -f puede fomentar la falta de disciplina, animando a los desarrolladores a eludir las prácticas adecuadas de control de versiones, como almacenar o confirmar cambios WIP (trabajo en curso). Esto podría dar lugar a un historial de repositorios caótico y complicar la colaboración. Por tanto, aunque git switch -f ofrece rapidez y comodidad, debe utilizarse con criterio y conociendo bien los riesgos para mitigar los posibles inconvenientes.

Conclusión

El comando git switch facilita el cambio y la creación de ramas en comparación con el antiguo comando git checkout.

Simplifica el proceso y ayuda a reducir los errores, facilitando a los desarrolladores la gestión de su base de código.

Este comando ayuda a evitar problemas comunes, como sobrescribir cambios accidentalmente o confundir distintas funciones de git checkout.

Adoptar este comando puede hacer que navegar por las ramas de Git sea más intuitivo y mejorar la colaboración dentro de los equipos de desarrollo.

Conviértete en Ingeniero de Datos

Demuestra tus habilidades como ingeniero de datos preparado para el trabajo.

Photo of François Aubry
Author
François Aubry
LinkedIn
Enseñar siempre ha sido mi pasión. Desde mis primeros días como estudiante, busqué con entusiasmo oportunidades para dar clases particulares y ayudar a otros estudiantes. Esta pasión me llevó a realizar un doctorado, en el que también trabajé como ayudante de profesor para apoyar mis esfuerzos académicos. Durante esos años, encontré una inmensa satisfacción en el entorno tradicional del aula, fomentando las conexiones y facilitando el aprendizaje. Sin embargo, con la llegada de las plataformas de aprendizaje en línea, reconocí el potencial transformador de la educación digital. De hecho, participé activamente en el desarrollo de una plataforma de este tipo en nuestra universidad. Estoy profundamente comprometida con la integración de los principios de la enseñanza tradicional con metodologías digitales innovadoras. Mi pasión es crear cursos que no sólo sean atractivos e informativos, sino también accesibles para los alumnos en esta era digital.
Temas

Aprende control de versiones con estos cursos

Course

Foundations of Git

2 hr
570
Discover the fundamentals of Git for version control in your software and data projects.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

tutorial

Git rename branch: Cómo cambiar el nombre de una rama local o remota

Aprende a renombrar ramas Git locales y remotas utilizando el terminal o la interfaz gráfica de usuario (GUI) de clientes populares como GitHub.
François Aubry's photo

François Aubry

tutorial

Tutorial de Git Revert y Git Reset para principiantes

Una guía tutorial para principiantes que muestra cómo utilizar los comandos Git Revert y Reset.
Zoumana Keita 's photo

Zoumana Keita

10 min

tutorial

Tutorial de GIT Push y Pull

Aprende a realizar solicitudes de Git PUSH y PULL con GitHub Desktop y la línea de comandos.

Olivia Smith

13 min

tutorial

Tutorial de GitHub y Git para principiantes

Un tutorial para principiantes que muestra cómo funciona el control de versiones Git y por qué es crucial para los proyectos de ciencia de datos.
Abid Ali Awan's photo

Abid Ali Awan

17 min

tutorial

Git pull force: Cómo sobrescribir una rama local con una remota

Aprende por qué git pull --force no es la mejor forma de sobrescribir una rama local con la versión remota, y descubre el método adecuado utilizando git fetch y git reset.
François Aubry's photo

François Aubry

tutorial

Cómo escribir un Bash Script: Un sencillo tutorial de Bash Scripting

Descubre los fundamentos de las secuencias de comandos bash y aprende a escribir una secuencia de comandos bash.
Kurtis Pykes 's photo

Kurtis Pykes

5 min

See MoreSee More