¿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 dedevelop.release/*: preparar una versión.hotfix/*: arreglos urgentes desdemain.- 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.
- Solo
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
mainydevelop, más ramas de feature, release y hotfix; encaja bien con versiones planificadas. GitHub Flow es más simple: solomain, 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."
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.