Si eres programador o te estás adentrando en este mundo, hay una herramienta que no puedes ignorar: Git. Dentro de Git tampoco podemos obviar al sistema GitFlow, que puede serte de lo más útil a la hora de administrar el flujo de trabajo de tus proyectos. En este artículo te vamos a enseñar qué es GitFlow, para qué lo puedes utilizar y veremos algunos ejemplos reales de la herramienta en un proyecto.
¿Qué es GitFlow y para qué se usa?
Git Flow es una metodología de ramificación y flujo de trabajo para el control de versiones con Git (del que te ofrecemos un curso de introducción para que te familiarices con él) diseñada para facilitar la colaboración en equipos y la administración de características, lanzamientos y correcciones de errores de manera estructurada. Aunque no es parte oficial de Git, es una convención popular y existe un conjunto de herramientas que ayudan a implementar esta metodología.
Por lo tanto, GitFlow se usa para mejorar la colaboración en equipos, facilitar la gestión de versiones y proporcionar una estructura robusta para el desarrollo de software.
Tipos de ramas en GitFlow
El flujo de trabajo Git Flow se basa en dos ramas principales y varias ramas auxiliares para administrar las distintas etapas de desarrollo. Estas ramas son:
- Master: representa la rama principal del proyecto y contiene el código estable que ha sido probado y listo para ser desplegado en producción.
- Develop: es la rama de desarrollo donde se combinan las características completas y se preparan para futuros lanzamientos. Es una rama más dinámica que la master.
Además de estas ramas principales, en GitFlow encontramos otras ramas auxiliares para organizar nuestros proyectos. Las más comunes son la Hotfix, Feature y Release.
Rama Hotfix
La rama Hotfix sirve para manejar problemas y errores críticos en producción sin que esto afecte al trabajo desarrollado en la rama Develop. Si se descubre un error crítico, se crea una rama de corrección urgente a partir de la Master, se soluciona el problema y luego se fusiona nuevamente en la Master y la Develop.
Rama Feature
La rama Feature se utiliza para añadir nuevas funcionalidades a un proyecto, desarrollándolas por separado antes de unirlas a la rama principal. Cuando se quiere añadir una nueva característica al proyecto, se crea una rama Feature. En ella, el desarrollador incluye la nueva funcionalidad, incluyendo el código correspondiente, las pruebas a realizar o cualquier otra tarea relacionada. Una vez que esta nueva funcionalidad ha sido desarrollada y probada, la rama Feature se fusiona con la rama Develop, eliminando así la Feature del proyecto.
Rama Release
Si la rama Develop se considera lo suficientemente estable, se puede lanzar como una nueva versión del software a través de una rama Release. Aquí se realizan pruebas finales, corrección de errores y ajustes menores. Cuando ya tenemos lista la versión, la rama Release se fusiona con la Master, luego con la Develop y, finalmente, puede eliminarse. De esta manera, se tendrá un control organizado de las distintas versiones del software.
Ejemplos de uso de GitFlow
Ahora que sabes qué es git flow y para qué se utilizan las distintas ramas que lo componen, llega la hora de conocer varios ejemplos de cómo se verían en un proyecto real.
Ejemplo de rama Feature
Estás trabajando en un proyecto y quieres añadir una nueva función de registro a la rama Develop. Para ello, crear una rama Feature usando el siguiente código:
En esta nueva rama, añades las características de esa función de registro. Una vez que la tengas, fusionas esa rama con la Develop de esta manera:
Ejemplo de rama Hotfix
Si en tu proyecto, de repente, surge un error crítico que debes arreglar de manera urgente, tendrás que crear una rama Hotfix. Para ello, inserta este código:
Cuando hagas el arreglo y compruebes que es correcto, fusiona la Hotfix con las ramas Master y Develop:
Ejemplo de rama Release
La rama Develop está lista para ser lanzada como una nueva versión del software, por lo que es el momento de crear una rama Release. Para ello, inserta el siguiente código:
Realiza las comprobaciones finales y corrige los posibles errores dentro de la rama Release. Cuando ya la tengas, fusiónala en Master y en Develop:
GitFlow vs Trunk: ¿en qué se diferencian?
Además de GitFlow, en Git también se puede encontrar otro enfoque para la gestión de ramas: Trunk-based development, más conocido simplemente como Trunk. A continuación, te explicamos las principales diferencias entre ambos:
- Estructura: Trunk se basa en una metodología de tronco único, donde el desarrollo se realiza en el tronco o rama principal, sin necesidad de abrir varias ramas para nuevas funcionalidades. Esto hace que su gestión sea más sencilla, pero también menos organizada en comparación con el método de git flow.
- Desarrollo: como hemos dicho, en Trunk el desarrollo de nuevas funcionalidades se realiza dentro del tronco principal. Esto ayuda a la Integración Continua y Despliegue Continuo (CI/CD). En el caso de GitFlow, las nuevas funcionalidades se desarrollan en ramas específicas antes de implementarlas en la principal.
- Tamaño del equipo: Trunk suele ser más usado por equipos DevOps y proyectos en los que prima la velocidad y sencillez. Por su parte, al ser más complejo, GitFlow se suele utilizar en proyectos más grandes y que requieren de una organización más exhaustiva.
Conclusión: por qué usar GitFlow
El sistema de GitFlow es fundamental para organizar el trabajo en equipo, donde los proyectos deben contar con una estructura concreta para que cada desarrollador sepa cómo va avanzando. Además, su organización en distintas ramas es perfecta para que el proyecto avance de forma fluida y correcta, evitando lanzar versiones con errores graves.
Averigua cómo usar GitFlow gracias a Rural Hack
Si quieres aprender los secretos de Git y GitFlow, el Bootcamp Online de Programación y APIs de Rural Hack te ayudará a conocer sus principales aspectos. ¡Reserva tu plaza y empieza tu carrera en el mundo de la programación!