Hace poco que comencé a trabajar de forma activa con git. Antes había tenido algunas incursiones para saber qué era, pero sin quedarme del todo claro hasta entrar en la práctica con proyectos como ecomponent u otros internos que desarrollo dentro de la empresa en la que trabajo.
Actualización (2021-04-11) después de algunos años empleando git en diferentes empresas tengo una visión muy diferente sobre git flow. Pero prefiero comentarlo en este otro artículo y dejar aquí la visión que tenía en 2012.
El caso es que queríamos emplear una técnica que nos ayudase a emplear git de una forma limpia. Un compañero nos indicó git-flow. Gitflow es una forma de emplear git basándose en ramas para facilitar el trabajo en equipo de todos los que emplean el repositorio. Da una semántica unificada a las mejoras a realizar sobre el código estable (ramas features/...), corrección de errores (ramas hotfixes/...) y permite mantener dos ramas de trabajo, una para desarrollo y/o pruebas (release aunque yo prefiero llamarla test) y otra estable para producción (master). Sobre la rama de producción se van agregando las etiquetas (tags) de versión de liberación del código de producción y listo, ya tenemos nuestro sistema estandarizado para poder trabajar sin problemas con cualquier otra persona del equipo. Un ejemplo a nivel visual de cómo sería esto nos lo da el gráfico realizado por la propia empresa para explicar su funcionamiento:
No obstante, gitflow no es solo la metodología de cómo emplear git, sino que además es una herramienta o extensión de git que se puede descargar desde github. Estos scripts nos ayudan a generar las ramas de features, release y realizar las mezclas de forma directa.
En el blog de nvie los creadores de la herramienta y del modelo de ramas han publicado un artículo (en inglés) para mostrar cómo se trabaja con el modelo presentando cada una de las facetas en las que nos podemos encontrar. Recomiendo su lectura si has comenzado a usar git o piensas tomarlo como herramienta de control de versiones para tus proyectos.