Hace unos años, trabajando en el sector IT con un equipo de desarrollo, nos topamos con una problemática horrible: fusionar el código era caótico y cada vez que se lanzaba una nueva versión, los conflictos no paraban y nos tocaba dedicar mucho tiempo a resolverlos. Afortunadamente, GitFlow nos permitió colaborar sin tantos dolores de cabeza, porque esta metodología cambió radicalmente la manera de gestionar nuestras ramas de código. De repente todos sabíamos qué rama usar para cada etapa del desarrollo, los lanzamientos se volvieron más predecibles y obviamente el estrés disminuyó bastante. Por eso quiero contarte qué es y cómo funciona, para que también lo uses con tu equipo de trabajo.
¿Qué es GitFlow?
GitFlow se define como un sistema de branching o ramificación o modelo de manejo de ramas en Git, en el que se usan las ramas principales y la feature. De modo que la rama feature la crean los desarrolladores para fusionarla con la rama principal, únicamente cuando cumpla con sus labores.
Este sistema se caracteriza, además, por incluir múltiples ramas de mayor duración y más commit o confirmaciones.
También es importante que conozcas que fue Vincent Driessen quien se encargó de publicar el modelo de metodología Git Flow por primera vez y de popularizar su uso, estableciendo un sistema estricto de ramificación con un diseño relacionados con el concepto de lo que es un release.
Cómo funciona GitFlow
El modelo de GitFlow se caracteriza por funcionar como un flujo de trabajo abstracto del sistema de Git, por lo que se encarga de organizar los tipos de ramas que deben configurarse, así como sus procesos de fusión una vez que terminen con sus actividades.
🔴 ¿Quieres entrar de lleno al mundo DevOps & Cloud Computing? 🔴
Descubre el DevOps & Cloud Computing Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en DevOps & Cloud Computing por una semanaEste modelo también incluye la propiedad de ser de gran ayuda para que los proyectos de sus usuarios puedan mantener un plan de entregas iterativas.
Además, este sistema contribuye a la paralelización del desarrollo a través del uso de ramas independientes para la publicación y preparación de versiones del proyecto, de la misma manera que se enfoca en la resolución de fallos que puedan presentarse en la plataforma.
Ten en cuenta que GitFlow puede llegar a ser más complicada de manejar que GitHub Flow y se usa cuando el software incluye lanzamientos o releases.
Además, este modelo se caracteriza por ser la opción ideal para el trabajo conjunto en el desarrollo y colaboración conjunta de una misma función en el sistema.
De hecho, puede utilizarse en proyectos con cambios constantes y necesitan de la actualización del ambiente de producción, lo que contribuye a asegurar la continuidad de las operaciones.
Ejemplo del funcionamiento de GitFlow
Imagina que estás trabajando en un proyecto de desarrollo web llamado “MiApp”. El equipo utiliza GitFlow para organizar el flujo de trabajo. Aquí te muestro cómo sería el proceso paso a paso:
Rama principal (main)
La rama main contiene el código siempre listo para producción. Cualquier cambio que llegue aquí debe ser estable y completamente probado.
Rama de desarrollo (develop)
Todo el trabajo en curso se integra en la rama develop. Aquí es donde se agregan nuevas características y se realizan las pruebas antes de llegar a producción.
Crear una nueva característica (Feature branch)
Supongamos que debes agregar una nueva funcionalidad de inicio de sesión.
- Crea una rama basada en develop:
git checkout develop
git checkout -b feature/login-feature
- Trabajas en la funcionalidad y haces los commits necesarios:
git add .
git commit -m "Implementa la funcionalidad de inicio de sesión"
- Cuando terminas, fusionas esta rama en develop:
git checkout develop
git merge feature/login-feature
- Finalmente, eliminas la rama de la característica:
git branch -d feature/login-feature
Preparar un lanzamiento (Release branch)
Cuando llega el momento de lanzar una nueva versión, creas una rama de lanzamiento basada en develop.
- Crea la rama de lanzamiento:
git checkout develop
git checkout -b release/v1.0
- Realizas pruebas, ajustes menores y actualizas el archivo de versión.
- Una vez lista, fusionas la rama en main y develop:
git checkout main
git merge release/v1.0
git checkout develop
git merge release/v1.0
- Luego, eliminas la rama de lanzamiento:
git branch -d release/v1.0
Corregir errores en producción (Hotfix branch)
Si detectas un problema en producción, usas una rama de corrección rápida.
- Crea una rama basada en main:
git checkout main
git checkout -b hotfix/fix-login-bug
- Corriges el problema, haces los commits y fusionas en main y develop:
git checkout main
git merge hotfix/fix-login-bug
git checkout develop
git merge hotfix/fix-login-bug
- Eliminas la rama de corrección:
git branch -d hotfix/fix-login-bug
Ventajas de GitFlow
- Permite la agilización de la velocidad de los procesos que derivan en la entrega del código terminado al equipo de pruebas.
- Disminuye los errores humanos que pueden resultar en la mezcla de ramas, gracias a que estos procesos los lleva a cabo directamente el sistema.
- Elimina la necesidad de depender de las funcionalidades para realizar labores relacionadas con la entrega de código para ponerlo en producción.
- Puede implementarse con el objetivo de mantener un proceso de soporte de fallos con efectividad, además de rápidas actualizaciones.
- Ideal para equipos de trabajo con varios desarrolladores, debido a que permite el trabajo conjunto en una misma característica.
- Se puede usar en proyectos con niveles altos de complejidad, aunque se debe tener en cuenta que el manejo de este sistema también puede resultar algo complejo.
Anímate a aprender mucho más sobre GitFlow y otros sistemas, plataformas y herramientas útiles para tus proyectos tecnológicos. No dudes en dar un paso más en tu aprendizaje y matricúlate en nuestro DevOps & Cloud Computing Full Stack Bootcamp.
Con este bootcamp solo necesitarás menos de 6 meses para conocer todo lo indispensable para convertirte en un verdadero experto del mundo tecnológico, logrando así destacar frente a tus competidores. ¡Anímate a matricularte ahora para avanzar en tu aprendizaje!