7. Git Flow: orden cuando el equipo crece
¿Qué es Git Flow?
Ya sabés usar ramas y Pull Requests. Git Flow es un modelo de ramificación propuesto por Vincent Driessen en 2010: no es un comando de Git, sino una convención de nombres y reglas sobre qué rama existe para qué propósito. Muchos equipos lo adoptan (o lo adaptan) para que todo el mundo hable el mismo idioma: dónde vive el código estable, dónde se integran features y cómo salen los parches urgentes.
Si tu proyecto es pequeño, a veces solo usás main y ramas cortas; Git Flow entra con fuerza cuando
necesitás separar claramente "lo que ya salió al mundo" de "lo que estamos armando para la próxima
versión", o cuando el equipo tiene roles definidos y procesos de aprobación.
Las dos ramas largas
En Git Flow hay dos ramas que nunca se borran — son la columna vertebral del modelo:
-
main(omaster): refleja producción. Solo recibe merges desdereleaseohotfix. Cada vez que llega un merge se etiqueta con el número de versión (v2.4.0). Nadie hace commits directos aquí. -
develop: la línea de integración del próximo release. Las features terminadas aterrizan aquí. Cuando el equipo decide quedevelopestá lista para salir a producción, se abre una ramarelease.
Ramas de apoyo (con prefijos)
Estas ramas son temporales: nacen con un propósito y se fusionan y borran al terminar.
-
feature/nombre: sale dedevelop, implementa una historia de usuario o tarea, y vuelve adevelopvía Pull Request. Ejemplo:feature/login-oauthofeature/carrito-compras. Nunca tocamaindirectamente. -
release/x.y.z: se corta desdedevelopcuando la versión está casi lista. En esa rama solo entran correcciones de último momento (bump de versión, ajuste de changelog, un bug de borde). Al terminar, se fusiona amainy también de vuelta adevelop, y se etiqueta el commit enmain(v2.4.0). -
hotfix/x.y.z: parche urgente en producción. Part demain, se corrige el bug, se fusiona amain(nuevo tag) y también adeveloppara que el arreglo no se pierda en la línea de desarrollo activa.
Ejemplo real: el equipo "Café API"
Imaginá la empresa "Café API", con un backend en Node y una app web en React. Despliegan cada vez que
etiquetan una versión en main. El equipo tiene roles claros:
- Lucía (tech lead): define prioridades, revisa PRs críticos y aprueba los merges a
main— desdereleaseohotfix. - Mateo y Sofía (desarrollo): trabajan en historias del sprint en
feature/pagos-stripeyfeature/notificaciones-push, abriendo PR haciadevelop. - Diego (QA): prueba el entorno de staging que refleja
develop; cuando se congela una versión, valida la ramarelease/2.4.0. - Valentina (DevOps): el pipeline despliega
maina producción y mantiene el changelog alineado con los tags.
Semana tipo
- Lun–Mié Mateo y Sofía hacen commits en sus features e integran en
developtras revisión.developes la "foto" de la próxima versión. - Jue Producto decide congelar la
2.4.0. Se abrerelease/2.4.0desdedevelop. Solo entran correcciones de borde. Diego prueba ese build. - Vie Se fusiona
release/2.4.0→main(tagv2.4.0) y de vuelta adevelop. Valentina dispara el deploy. - Lun (urgencia) Bug de facturación en prod. Lucía abre
hotfix/2.4.1desdemain, Mateo sube el parche, merge →main(tagv2.4.1) y el mismo fix se integra endevelop.
En resumen: features aterrizan en develop; versiones estables salen por
release → main; urgencias en prod van por hotfix.
El equipo comparte un lenguaje de ramas sin mezclar "código en progreso" con "código desplegado".
🌿 ¿Y el plugin git-flow?
Existe una extensión de línea de comandos que automatiza crear y fusionar estas ramas con un solo comando. No es
obligatoria; podés seguir el mismo modelo con git branch, git merge y PRs. Pero si el
equipo ya adoptó el modelo, el plugin elimina pasos manuales.
Cómo encajan las Pull Requests
Las Pull Requests siguen siendo el mecanismo de revisión de código: una feature termina
en un PR hacia develop; un hotfix en un PR hacia main. Git Flow define
qué ramas existen y qué tocan; el PR define cómo revisamos y aprobamos cada fusión. Ambos conceptos
se complementan — no se reemplazan.
Quiz: Git Flow
Comprobá que dominás las ramas, los prefijos y el flujo del equipo antes de continuar.