← Git

Flujos y buenas prácticas

¿Qué es un flujo de ramas y en qué se diferencian Git Flow y GitHub Flow?

Ver respuesta — intenta responderla en voz alta primero

Un flujo de ramas es un conjunto de reglas sobre cómo el equipo usa las ramas. Git Flow es más elaborado: ramas de larga vida (main, develop) más ramas de feature, release y hotfix. GitHub Flow es simple: una sola rama principal (main) y ramas cortas de feature que se integran vía PR y se despliegan seguido.

No basta con saber usar ramas: el equipo necesita acordar cómo usarlas. Los dos modelos más conocidos:

  • Git Flow (más formal):

    • main: código en producción.
    • develop: integración del trabajo en curso.
    • feature/*: cada nueva funcionalidad, sale de develop.
    • release/*: preparar una versión.
    • hotfix/*: arreglos urgentes desde main.
    • Bueno para proyectos con versiones y releases planificados.
  • GitHub Flow (más ágil):

    • Solo main (siempre desplegable).
    • Ramas de feature cortas que salen de main.
    • Se integran vía Pull Request y se despliega continuamente.
    • Bueno para despliegue continuo y equipos web modernos.

La tendencia hoy, con CI/CD, es hacia flujos simples como GitHub Flow.

# --- GitHub Flow: simple, una rama principal ---
git switch main
git switch -c feature/login   # rama corta de feature
# ...commits...
git push -u origin feature/login
# Se abre un PR hacia main, se revisa, se mergea y se despliega

# --- Git Flow: ramas de larga vida ---
git switch develop
git switch -c feature/carrito   # feature sale de develop
# ...commits...
git switch develop
git merge feature/carrito       # se integra a develop
# Al preparar versión: se crea release/1.0 desde develop
# Un bug urgente en produccion: hotfix/1.0.1 sale de main

Creer que "hay un solo flujo correcto". Depende del proyecto: Git Flow puede ser demasiado pesado para un equipo pequeño con despliegue continuo, y GitHub Flow puede quedarse corto para software con versiones formales. Otro error es no acordar el flujo en equipo y que cada quien use las ramas a su manera.

"Un flujo de ramas es cómo acuerda el equipo usar las ramas. Git Flow es más formal: ramas de larga vida como main y develop, más ramas de feature, release y hotfix; encaja bien con versiones planificadas. GitHub Flow es más simple: solo main, ramas de feature cortas que se integran por PR y se despliegan seguido; encaja con despliegue continuo. No hay uno correcto: depende del proyecto, aunque con CI/CD la tendencia es hacia flujos simples como GitHub Flow."

Reto rápido

Un equipo pequeño despliega su app web varias veces al día con CI/CD. ¿Qué flujo encaja mejor, Git Flow o GitHub Flow?

Ver respuesta

GitHub Flow. Con despliegue continuo y una app web que sale varias veces al día, conviene un flujo simple: una sola rama main siempre desplegable y ramas de feature cortas que se integran por PR y se despliegan enseguida. Git Flow, con sus ramas de develop, release y hotfix, añade una ceremonia que tiene más sentido cuando manejas versiones formales y releases planificados.