Gestión de ramas

Intermedio
Git
Git
Actualizado: 24/08/2025

Crear y eliminar ramas

Las ramas en Git representan líneas de desarrollo independientes que permiten trabajar en diferentes funcionalidades sin afectar el código principal. Cada rama mantiene su propio historial de commits y puede evolucionar de forma paralela a otras ramas del proyecto.

La gestión eficiente de ramas es fundamental para mantener un flujo de trabajo organizado y facilitar la colaboración en equipos de desarrollo. Git proporciona comandos específicos para crear, listar y eliminar ramas según las necesidades del proyecto.

Crear nuevas ramas

El comando git branch permite crear una nueva rama basada en el commit actual. La sintaxis básica para crear una rama es:

git branch nombre-de-la-rama

Este comando crea la rama pero no cambia automáticamente a ella. Por ejemplo, para crear una rama destinada a desarrollar una nueva funcionalidad:

git branch feature/login-usuario

Una alternativa más eficiente es usar git switch con la opción -c, que crea y cambia a la nueva rama en un solo comando:

git switch -c feature/login-usuario

También puedes crear una rama basada en un commit específico proporcionando su hash:

git branch feature/nueva-funcionalidad a1b2c3d

Para crear una rama basada en una rama remota, utiliza la siguiente sintaxis:

git switch -c feature/api-integration origin/develop

Listar ramas existentes

El comando git branch sin argumentos muestra todas las ramas locales del repositorio:

git branch

La rama actual aparece marcada con un asterisco (*) y resaltada en color. Para ver tanto las ramas locales como las remotas, utiliza la opción -a:

git branch -a

Si solo necesitas ver las ramas remotas, emplea la opción -r:

git branch -r

Eliminar ramas locales

Para eliminar una rama local que ya no necesitas, utiliza la opción -d con git branch:

git branch -d feature/login-usuario

Este comando realiza una verificación de seguridad y solo elimina la rama si sus cambios han sido fusionados en otra rama. Si intentas eliminar una rama con cambios no fusionados, Git mostrará un error preventivo.

Para forzar la eliminación de una rama con cambios no fusionados, utiliza la opción -D (mayúscula):

git branch -D feature/experimento-fallido

Ten precaución con este comando, ya que los cambios no fusionados se perderán permanentemente.

Eliminar ramas remotas

Para eliminar una rama en el repositorio remoto, utiliza el comando git push con la sintaxis especial:

git push origin --delete feature/login-usuario

También puedes usar la sintaxis alternativa con dos puntos:

git push origin :feature/login-usuario

Después de eliminar una rama remota, es recomendable limpiar las referencias locales a ramas remotas eliminadas:

git remote prune origin

Buenas prácticas para nomenclatura

Adopta una nomenclatura consistente para tus ramas que facilite la identificación de su propósito:

  • feature/nombre-funcionalidad: Para nuevas características
  • bugfix/descripcion-error: Para corrección de errores
  • hotfix/problema-critico: Para soluciones urgentes
  • develop: Rama de desarrollo principal
  • main: Rama de producción estable

Evita usar espacios o caracteres especiales en los nombres de las ramas. Utiliza guiones o barras para separar palabras y mantén los nombres descriptivos pero concisos.

# Ejemplos de buena nomenclatura
git switch -c feature/sistema-autenticacion
git switch -c bugfix/correccion-validacion-email
git switch -c hotfix/seguridad-sql-injection

La eliminación regular de ramas obsoletas mantiene el repositorio limpio y facilita la navegación entre las ramas activas del proyecto.

Cambiar entre ramas

El cambio entre ramas es una operación fundamental que permite alternar el contexto de trabajo entre diferentes líneas de desarrollo. Git actualiza automáticamente el directorio de trabajo para reflejar el estado de los archivos en la rama de destino.

Cuando cambias de rama, Git modifica tres elementos principales: el puntero HEAD (que indica la rama actual), el contenido del directorio de trabajo y el área de staging. Esta transición debe realizarse con el directorio de trabajo limpio para evitar conflictos.

Cambiar a una rama existente

El comando moderno git switch es la forma recomendada para cambiar entre ramas:

git switch develop

Este comando actualiza el directorio de trabajo para reflejar el estado actual de la rama develop. Si la rama no existe localmente pero existe en el remoto, Git la creará automáticamente:

git switch feature/nueva-api

Para cambiar a una rama remota que no tienes localmente, Git establecerá automáticamente el seguimiento remoto:

git switch origin/feature/integracion-pagos

Verificar el estado antes del cambio

Antes de cambiar de rama, es importante verificar que no tienes cambios pendientes en el directorio de trabajo:

git status

Si tienes modificaciones sin confirmar, Git impedirá el cambio de rama y mostrará un mensaje de error. En este caso, debes decidir entre confirmar los cambios, descartarlos o guardarlos temporalmente.

Para confirmar los cambios antes del cambio:

git add .
git commit -m "Guardar progreso antes de cambiar rama"
git switch develop

Cambios con archivos modificados

Si intentas cambiar de rama con archivos modificados, Git evaluará si el cambio puede realizarse sin conflictos. Si los archivos modificados no existen en la rama de destino o no han cambiado, Git permitirá el cambio manteniendo las modificaciones:

# Modificas un archivo nuevo
echo "contenido temporal" > archivo-nuevo.txt

# Git permite el cambio si el archivo no existe en la otra rama
git switch main

Sin embargo, si los archivos modificados tienen versiones diferentes en ambas ramas, Git bloqueará el cambio:

# Error: Your local changes to the following files would be overwritten by checkout

Forzar el cambio descartando modificaciones

Para cambiar de rama descartando las modificaciones locales, utiliza la opción --discard-changes:

git switch --discard-changes main

Este comando elimina permanentemente los cambios no confirmados, por lo que debe usarse con precaución.

Cambiar a un commit específico

Puedes cambiar directamente a un commit específico utilizando su hash, lo que coloca el repositorio en estado "detached HEAD":

git switch --detach a1b2c3d

En este estado, puedes examinar el código histórico o crear una nueva rama desde ese punto:

git switch -c feature/desde-commit-historico

Navegación rápida entre ramas

Git mantiene un historial de ramas visitadas recientemente. Puedes volver a la rama anterior usando:

git switch -

Este comando es equivalente a cd - en el sistema de archivos y resulta muy útil para alternar rápidamente entre dos ramas de trabajo.

Para cambiar a la rama anterior y crear una nueva desde ella:

git switch -c feature/nueva-desde-anterior -

Verificar la rama actual

Después de cambiar de rama, puedes confirmar la rama activa de varias formas:

# Mostrar solo el nombre de la rama actual
git branch --show-current

# Ver todas las ramas con la actual marcada
git branch

# Información detallada del estado actual
git status

Cambios automáticos en el directorio de trabajo

Cuando cambias de rama, Git actualiza automáticamente todos los archivos del directorio de trabajo para reflejar su estado en la rama de destino. Los archivos que no existen en la nueva rama desaparecen temporalmente, mientras que los archivos específicos de la nueva rama aparecen automáticamente.

# En rama feature/login-usuario
ls
# archivo1.txt  login.js  styles.css

git switch main
ls
# archivo1.txt  README.md  index.html

Esta sincronización automática permite trabajar en diferentes contextos sin interferencias, manteniendo cada rama como un entorno de desarrollo independiente.

El dominio del cambio entre ramas facilita un flujo de trabajo ágil y permite aprovechar al máximo la flexibilidad que ofrecen las ramas en Git para organizar el desarrollo de software.

Fuentes y referencias

Documentación oficial y recursos externos para profundizar en Git

Documentación oficial de Git
Alan Sastre - Autor del tutorial

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Git es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.

Más tutoriales de Git

Explora más contenido relacionado con Git y continúa aprendiendo con nuestros tutoriales gratuitos.

Aprendizajes de esta lección

  • Comprender qué son las ramas en Git y su importancia en el desarrollo paralelo.
  • Aprender a crear ramas nuevas, tanto locales como basadas en commits o ramas remotas.
  • Saber listar y eliminar ramas locales y remotas de forma segura.
  • Dominar el cambio entre ramas, incluyendo manejo de conflictos y estado del directorio de trabajo.
  • Aplicar buenas prácticas en la nomenclatura y mantenimiento de ramas para un flujo de trabajo eficiente.