GitFlow es un workflow y conjunto de extensiones para Git introducidos por Vincent Driessen con las que conseguiremos gestionar de manera eficiente las ramas en nuestros repositorios Git. GitFlow se basa en un conjunto de ramas que utilizaremos según el tipo de tarea que estemos llevando a cabo en nuestro proyecto y podemos clasificarlas en ramas principales y ramas de soporte.

Ramas Principales:

Son las ramas más importantes cuando trabajamos con GitFlow y su tiempo de vida durante nuestro proyecto es perpetuo y en consecuencia no serán borradas.

Tenemos dos ramas principales:

  • Master: es la rama principal de nuestro repositorio y la que se crea por default cuando iniciamos un proyecto en Git. En esta rama solo estará el código de la última versión de nuestro desarrollo que esté preparado para desplegar en producción.
  • Develop: esta rama es la encargada de contener el último estado de nuestro código en desarrollo con las últimas funcionalidades finalizadas para la próxima release.

GitFlow-main-branches

Ramas de soporte:

Son ramas que sirven de apoyo para las ramas principales y que usaremos en diferentes situaciones de nuestro proyecto como pueden ser el desarrollo de nuevas funcionalidades, preparación de nuevas releases o corrección de bugs. Estas ramas tienen un tiempo de vida temporal y generalmente serán borradas al finalizar su tarea correspondiente.

Tenemos 3 tipos de ramas auxiliares:

  • Feature: estas ramas las crearemos con origen en la rama develop y sirven para cuando queremos desarrollar nuevas funcionalidades para nuestro proyecto. Cuando hayamos finalizado el trabajo que estemos desarrollando integraremos esta rama con sus respectivos cambios de vuelta a la rama develop.
    Podremos crear tantas ramas feature como necesitemos y su tiempo de vida será igual al tiempo que tardemos en desarrollar nuestra funcionalidad.

GitFlow-release-branches

  • Release: son ramas que también crearemos desde la rama develop y las utilizaremos para preparar y hacer los últimos ajustes a nuestro código antes de integrar a master para tener una versión lista para desplegar en producción.
    Es importante destacar que en esta rama no debemos hacer grandes cambios y solamente gestionar pequeños ajustes como corregir fallos menores, modificar número de versiones y cosas similares. Además de integrar los cambios de esta rama a master también los debemos integrar en develop para que las futuras versiones de nuestro código en desarrollo estén al día con los cambios realizados en la rama release.
  • Hotfix: estas ramas serán utilizadas para solucionar errores inesperados que puedan surgir en producción y necesitemos corregirlos cuanto antes para desplegar una nueva versión con la solución. Crearemos estas ramas desde master y una vez corregido el bug tendremos que integrar nuestros cambios tanto en master para desplegar una nueva versión, como en develop para incorporar la solución al código que esté en fase desarrollo avanzado para futuras versiones.
    Debemos tener en cuenta que podemos encontrarnos con la situación de crear una rama hotfix cuando exista una rama release. En este caso integraremos los cambios de hotfix a master y a release, ya que cuando hayamos finalizado la rama release esta se integrará a develop.

Gitflow-hotfix-branches

 

Ejemplo del flujo de trabajo completo:

GitFlow-workflow

 

Puedes utilizar GitFlow en tu proyecto de diferentes maneras, tanto por consola haciendo uso de las extensiones git-flow como con algún gestor de repositorios como SourceTree, GitKraken o SmartGit.

En Bemobile utilizamos GitFlow con SourceTree y nos permite gestionar de una manera rápida y eficaz cada fase de nuestros desarrollos pero también existen otros workflows alternativos para trabajar con Git, algunos de ellos bastantes populares e interesantes como GitHub Flow y que también recomendamos que le eches una ojeada.

 

Arthur AntunesArthur Antunes

Leave a Reply

Your email address will not be published. Required fields are marked *