Git Flow es un sistema de ramificación especial para Git. Ayuda al equipo a controlar y agregar mejor las diferentes versiones del proyecto. ¡Descubre cómo utilizarlo!
Qué es Git Flow
Git Flow es uno de los muchos estilos de flujos de trabajo de Git: un conjunto de modelos de ramificación para Git. Es un marco amplio para grandes proyectos que se puede utilizar para las necesidades de tu equipo.
Git Flow describe el ciclo de lanzamiento del proyecto y agrega roles específicos a diferentes ramas. Define cuándo y cómo las ramas interactúan entre sí. En este modelo hay dos tipos de ramas: Master y Develop.
Develop es la rama de integración para funciones. Master almacena el historial del lanzamiento oficial. Este diseño de ramificación fue publicado por Vincent Driessen en 2009 y desde entonces se ha vuelto muy popular.
Ramas Principales
La rama principal (Master branch) almacena la historia oficial de lanzamientos. Contiene una versión reducida de tu proyecto y es la base del modelo de ramificación con un tiempo de vida indefinido.
La rama de desarrollo (Develop branch) es la rama de integración para funciones. Contiene el historial completo de tu proyecto y también tiene un tiempo de vida indefinido. Cuando el código en esta rama se vuelve estable y listo para el lanzamiento, los cambios se fusionan en la rama principal y se marcan con un número de versión.
Ramas de Soporte
Las ramas de funciones (Feature branches) se crean para cada nueva función. Su rama padre es la rama de desarrollo. Las funciones nunca deben interactuar directamente con la rama principal.
La rama de lanzamiento (Release branch) se crea cuando hay suficientes funciones para un lanzamiento. Permite que un equipo trabaje en el lanzamiento actual, mientras que otro equipo sigue trabajando en funciones para el próximo lanzamiento. La rama padre del lanzamiento también es la rama de desarrollo. En esta rama se lleva a cabo la entrega continua.
Las ramas de corrección (Hotfix branches) son ramas de mantenimiento. Se crean para corregir rápidamente errores en el lanzamiento en producción. Estas ramas permiten al equipo arreglar errores sin interrumpir el flujo de trabajo ni esperar al siguiente lanzamiento. Su rama padre es la rama principal. Las ramas de corrección son las únicas que se pueden crear directamente desde la rama principal. Puedes automatizar la creación de ramas de corrección: tan pronto como aparece un error, se crea automáticamente una rama de corrección.
Por qué usar Git Flow
- Git Flow simplifica el desarrollo paralelo, ya que aísla el nuevo desarrollo del proyecto lanzado. Puedes trabajar con cualquier versión del proyecto. El nuevo desarrollo se realiza en ramas de funciones y se fusiona de nuevo cuando el desarrollador está satisfecho con el código.
- Tu equipo podrá colaborar mejor y gastar menos tiempo gestionando versiones del proyecto si utiliza una estrategia de ramificación simple y clara, como Git Flow.
- Siempre puedes confirmar cambios y crear una nueva rama de funciones cuando necesites interrumpir tu trabajo. Puedes volver a tu función en cualquier momento.
- Las ramas de corrección permiten a tu equipo realizar cambios urgentes. No tienes que preocuparte de fusionar accidentalmente nuevo desarrollo al mismo tiempo.
Problemas que Resuelve Git Flow
- Mala calidad de código
- Clientes insatisfechos
- Retención del conocimiento
- Mentalidad de «No es mi problema»
- Trabajo sin sentido
Cómo Implementar Git Flow
Hay muchas aplicaciones que admiten el modelo de ramificación Git Flow y tienen configuraciones específicas para Git Flow (por ejemplo, SourceTree, SmartGit o GitKraken). Elige la aplicación adecuada para tu sistema operativo para inicializar Git Flow.
Configura el proyecto siguiendo estos pasos:
- Comienza a usar git-flow clonando un repositorio git existente.
- Crea una rama de desarrollo vacía para complementar la rama principal master. Envía esta rama al servidor.
- El desarrollo de nuevas funciones comienza en la rama de desarrollo. Cada función se encuentra en su propia rama. Envía las ramas de funciones al repositorio git para realizar una copia de seguridad.
- Fusiona la rama de funciones de nuevo en la rama de desarrollo cuando la función esté completa.
- Crea una rama de lanzamiento cuando las funciones estén listas para ser lanzadas. La rama padre es la rama de desarrollo.
- Fusiona la rama de lanzamiento en la rama principal y márcala con un número de versión. Después de esto, fusiónala de nuevo en la rama de desarrollo para conservar el progreso desde el lanzamiento. La rama de lanzamiento se eliminará.
- Si es necesario realizar cambios críticos, crea una rama de corrección. Haz un fork de la rama directamente desde la rama principal. Cuando los cambios estén completos, fusiona la rama de corrección en ambas ramas: la principal y la de desarrollo (o la rama de lanzamiento actual). Marca la rama principal con el número de versión actualizado.
Errores Comunes al Usar Git Flow
- No todos los miembros del equipo utilizan Git Flow. Es importante que todo el equipo comprenda y use el mismo flujo de trabajo para un desarrollo fluido del proyecto.
- Git Flow está configurado para un producto específico. Esta configuración puede ser demasiado complicada para un nuevo desarrollador.
- El equipo tiene demasiadas funciones y no logra completarlas antes del lanzamiento. El desarrollo se aleja del entorno de producción.