Git Flow: ¿cuál es su funcionamiento?

Por Felipe

Publicado en:

Cuando se trabaja en programación hoy en día es habitual utilizar un sistema para controlar las versiones de desarrollo. El trabajo en equipo ha dejado atrás a los programadores solitarios que desarrollaban por su cuenta sin colaborar con otros. Los repositorios como Git se han convertido en una herramienta fundamental en el desarrollo de proyectos de programación gracias a su capacidad de crear copias del proyecto o ramas para poder añadir nuevo código sin miedo a no poder volver atrás si no funciona como se desea.

Para simplificar este trabajo en Git se utiliza una herramienta como Git Flow que divide todos los proyectos en dos ramas, la principal y la de desarrollo, y en otra serie de ramas finitas que apoyan a estas dos (todo en Git Flow son ramas).

 

Qué es Git Flow

Git Flow reúne una serie de extensiones para Git que facilitan el flujo de trabajo y la gestión de ramas. Consiste en agrupar varios comandos tradicionales de Git para agregar nuevos comandos de alto nivel. Git Flow se basa en el modelo de ramificaciones de Vincent Driessen presentado en el año 2010 en un artículo llamado A successful Git branching model.

 

Cómo funciona Git Flow

Git Flow basa su estrategia en dos ramas principales que tienen un tiempo de vida infinito, master y develop y en una serie de ramas de apoyo finitas.

 

Rama master

Esta rama es donde se está el proyecto tal y como se encuentra en cuanto a producción. Esta rama solo llega código que ya ha sido testeado, está libre de errores y listo para lanzar a una nueva versión.

 

Rama develop

Incluye las últimas actualizaciones realizadas al proyecto y que se encuentran preparadas para pasar a producción y estar disponibles en el próximo release del mismo. Todos los desarrollos de nuevas funciones y mejoras se guardan en develop a la espera de salir a producción.

 

Ramas finitas

Se trata de ramas que tienen una vida finita y que sirven como apoyo a las ramas master y develop. En estas ramas se desarrollan nuevas funcionalidades en paralelo y se dividen en ramas funcionales, hotfix (revisiones) y release (lanzamiento).

Las ramas funcionales surgen a través de incidencias o tickets para añadir nuevas funciones o corregir algún problema. Una vez resuelta esta rama en git flow se hará merge a la rama master y se eliminará (quedando el código ya incluido en master).

Las ramas de lanzamiento o git flow release se utilizan para preparar un nuevo lanzamiento a producción, haciendo los ajustes de última hora y dejando libre la rama develop para seguir avanzando con el proyecto.

Las ramas de revisiones o hotfix tienen la misma función de preparar el lanzamiento a producción, pero con la diferencia de que no son planeadas, al surgir de algún error en el código que necesita ser corregido.

En la estrategia Git Flow los desarrolladores nunca trabajan directamente sobre las ramas master y develop. En estas ramas se vuelca el trabajo realizado en las ramas de apoyo una vez se comprueba su funcionalidad.

 

Cuáles son sus ventajas

Las principales ventajas de utilizar Git Flow al trabajar en un proyecto de desarrollo de forma colaborativa son:

 

Facilita el seguimiento del flujo de trabajo

Git Flow no solo son un conjunto de comandos, sino una forma de dividir y organizar el trabajo para poder tener un mayor control en su flujo. Las dos ramas principales garantizan que todo el desarrollo permanece siempre seguro al redirigir el trabajo hacia ramas de apoyo que volverán sus resultados en ella.

Trabajar con Git Flow establece unas normas que garantizan un flujo de trabajo óptimo para el equipo de desarrollo, consiguiendo una mayor agilidad a la hora de añadir nuevas funcionalidades que puedan ser lanzadas en poco tiempo.

 

Mejora el trabajo en equipo

Los miembros del equipo de desarrollo pueden abrir nuevas ramas de apoyo para desarrollar nuevas funciones, probar cambios en el trabajo de otro miembro, corregir errores de forma conjunta y muchas otras opciones. Todo ello sin que el proyecto en desarrollo o el código de producción se vea afectado.

 

Otros beneficios

Algunos beneficios que se obtienen en el desarrollo con una estrategia Git Flow son:

  • -Disminuye el tiempo de entrega de código para que pasen a la fase de test o pruebas.
  • -Disminuye los errores al pasar código entre las distintas ramas.
  • -Se puede probar cualquier cosa sin miedo a que los cambios rompan nada en el código original.
  • -Permite actualizaciones rápidas con un soporte de errores efectivo.
  • -Se puede continuar con el desarrollo cuando ya se tiene lista una entrega.

 

 

Git Flow ofrece una capa de abstracción a los desarrolladores que les permite seguir un flujo adecuado en su trabajo, mejorando los proyectos, facilitando la colaboración entre los miembros del equipo de desarrollo y ahorrando tiempo y esfuerzo (consiguiendo una mayor productividad).