← Git

Ramas

¿Cómo creas una rama y cómo cambias a ella?

Ver respuesta — intenta responderla en voz alta primero

Creas una rama con git branch <nombre> y cambias a ella con git switch <nombre> (o el antiguo git checkout <nombre>). Para crear y cambiar en un solo paso: git switch -c <nombre> (o git checkout -b <nombre>).

Hay dos acciones: crear la rama y moverte a ella.

  • git branch feature: crea la rama feature pero te deja donde estás. No te mueve.
  • git switch feature: te mueve a la rama feature (mueve HEAD ahí).
  • git switch -c feature: crea y cambia en un solo comando. Es lo más común en el día a día.

git switch es el comando moderno (desde Git 2.23) para cambiar de rama. Antes se usaba git checkout, que sigue funcionando pero hace demasiadas cosas (cambiar de rama, restaurar archivos...), por eso lo separaron en switch (ramas) y restore (archivos).

# Crear una rama (sin moverte a ella)
git branch nueva-feature

# Cambiar a una rama existente
git switch nueva-feature
# Salida: Switched to branch 'nueva-feature'

# Crear y cambiar en un solo paso (lo más usado)
git switch -c otra-feature
# Salida: Switched to a new branch 'otra-feature'

# Equivalente con el comando antiguo checkout
git checkout -b otra-feature

# Volver a la rama principal
git switch main

# Borrar una rama que ya no necesitas (una vez mergeada)
git branch -d nueva-feature

Hacer git branch feature y creer que ya estás trabajando en feature, cuando en realidad branch solo la crea pero no te mueve: sigues en la rama anterior. Por eso conviene usar git switch -c feature, que crea y cambia de una vez. Otro error: intentar borrar la rama en la que estás parado (Git no lo permite; primero cámbiate a otra).

"Creo una rama con git branch nombre, pero eso no me mueve a ella; para cambiarme uso git switch nombre. En el día a día casi siempre uso git switch -c nombre, que crea la rama y me cambia en un solo paso; el equivalente antiguo es git checkout -b. switch es el comando moderno para ramas, mientras que checkout hacía demasiadas cosas a la vez."

Reto rápido

¿Cuál es la diferencia entre git branch feature y git switch -c feature?

Ver respuesta

git branch feature solo crea la rama, pero te deja parado en la rama actual. git switch -c feature crea y te cambia a la rama feature en un solo paso (mueve HEAD ahí). El segundo es el atajo más usado cuando vas a empezar a trabajar en la rama nueva de inmediato.