Git

Git

Tutorial Git: Gitflow

Gitflow: Introducción, Filosofía y Propósito. Descubre cómo organiza y agiliza el desarrollo colaborativo con ramas específicas en Git.

Aprende Git y certifícate

Introducción a Gitflow: objetivos y filosofía

Gitflow es una metodología de trabajo que define un modelo claro de ramificaciones para proyectos que utilizan Git como sistema de control de versiones. Se orienta a mejorar la organización en el desarrollo colaborativo, estableciendo convenciones sobre cómo y cuándo se deben utilizar las distintas ramas.

El objetivo principal de Gitflow es proporcionar una estructura coherente que separe los distintos tipos de trabajo que se realizan en un proyecto. Esto incluye el desarrollo de nuevas funcionalidades, preparaciones para lanzamientos y corrección de errores. Al utilizar ramas específicas para cada propósito, se logra un flujo de trabajo ordenado.

La filosofía detrás de Gitflow se centra la importancia de mantener el código en un estado estable en todo momento. Se promueve el uso de ramas dedicadas para el desarrollo, minimizando el riesgo de introducir cambios no deseados en la rama principal. Esta segregación de tareas permite que se pueda trabajar en múltiples partes del proyecto simultáneamente sin que se produzcan conflictos.

Implementar Gitflow implica seguir una serie de convenciones para la creación y fusión de ramas, lo que conduce a un historial de commits más limpio y una mejor trazabilidad de los cambios. Los desarrolladores conocen exactamente en qué rama deben realizar su trabajo y cómo hacer para integrar sus aportes al proyecto principal.

Ramas principales (main y develop): Roles y creación de ramas de soporte

En el modelo Gitflow, se utilizan dos ramas principales que forman la base del flujo de trabajo: main y develop.

La rama main representa el código en producción, es decir, la versión estable y liberada del software. Esta rama siempre debe reflejar el estado más reciente que está en uso por los usuarios. Por ello, se tiene cuidado para que sólo haya código probado y listo para desplegar.

Por otro lado, la rama develop es el centro de integración para las nuevas funcionalidades. Aquí es donde se fusionan las diferentes aportaciones antes de prepararlas para una próxima liberación. Esta rama contiene el código más actualizado que ha pasado por pruebas, pero que aún no está en producción.

Para facilitar el desarrollo y mantenimiento, se crean ramas de soporte a partir de develop o main según el caso.

Flujo de trabajo de features, releases y hotfixes: Pasos típicos

En el modelo Gitflow, el flujo de trabajo se basa en la gestión de ramas específicas para desarrollar nuevas funcionalidades (features), preparar versiones para producción (releases) y aplicar correcciones urgentes (hotfixes).

Desarrollo de funcionalidades (feature branches):

1. Crear una rama de funcionalidad desde la rama develop. Esta rama permite trabajar de forma aislada en la nueva característica sin afectar al código principal.

git checkout develop
git checkout -b feature/nueva-funcionalidad

2. Desarrollar la funcionalidad realizando cambios y confirmando commits en la rama feature/nueva-funcionalidad.

3. Fusionar la rama de funcionalidad de vuelta en develop una vez completada y probada la nueva característica.

git checkout develop
git merge feature/nueva-funcionalidad

4. Eliminar la rama de funcionalidad para mantener el repositorio limpio.

git branch -d feature/nueva-funcionalidad

Ejemplo de uso de GitFlow en IntelliJ IDEA:

Gitflow en IntelliJ IDEA

Preparación de versiones (release branches):

1. Cuando se alcanza un estado estable en develop y se desea preparar una nueva versión, se crea una rama de liberación desde develop.

git checkout develop
git checkout -b release/1.0.0

2. En la rama release/1.0.0, se realizan tareas de ajuste final, corrección de errores menores y actualización de documentación.

3. Actualizar el número de versión en los archivos correspondientes.

4. Una vez lista, se fusiona la rama de liberación en main y develop, y se etiqueta el commit en main con el número de versión.

git checkout main
git merge release/1.0.0
git tag -a 1.0.0 -m "Versión 1.0.0"

git checkout develop
git merge release/1.0.0

5. Eliminar la rama de liberación para mantener el historial ordenado.

git branch -d release/1.0.0

Aplicación de correcciones urgentes (hotfix branches):

1. Si se detecta un fallo crítico en producción, se crea una rama de corrección desde main.

git checkout main
git checkout -b hotfix/1.0.1

2. Realizar los cambios necesarios para solucionar el problema en la rama hotfix/1.0.1, confirmando los commits correspondientes.

3. Fusionar la rama de hotfix en main y develop, y etiquetar el commit en main.

git checkout main
git merge hotfix/1.0.1
git tag -a 1.0.1 -m "Hotfix 1.0.1"

git checkout develop
git merge hotfix/1.0.1

4. Eliminar la rama de hotfix para mantener el repositorio organizado.

git branch -d hotfix/1.0.1

Herramientas de automatización: Plugins y scripts que implementan Gitflow

Para facilitar uso del modelo Gitflow, existen varias herramientas de automatización que simplifican la gestión de ramas.

Una de las herramientas más populares es la extensión git-flow desarrollada por Vincent Driessen, el creador del modelo Gitflow. Esta extensión añade una serie de comandos al cliente de Git que automatizan tareas comunes como la creación de ramas de feature, release y hotfix, así como la finalización y fusión de las mismas. Para instalarla, en sistemas basados en Unix, se puede utilizar Homebrew:

brew install git-flow

Una vez instalada, se inicializa Gitflow en un repositorio existente con:

git flow init

Seguidamente, se utilizan comandos simplificados para gestionar el flujo de trabajo. Por ejemplo, para iniciar una nueva funcionalidad:

git flow feature start nueva-funcionalidad

Y al finalizarla:

git flow feature finish nueva-funcionalidad

Estos comandos automatizan la creación, cambio y fusión de ramas según las convenciones de Gitflow, reduciendo el trabajo del desarrollador.

Además de la versión original, existe una variante mejorada llamada git-flow AVH mantenida por Petervanderdoes, que incluye correcciones y funcionalidades adicionales. Esta versión suele estar disponible en los gestores de paquetes más comunes y se recomienda mucho por su mantenimiento activo.

Para entornos gráficos, muchas herramientas y clientes Git han incorporado soporte para Gitflow. Por ejemplo, Sourcetree, un cliente Git gratuito de Atlassian, tiene una interfaz intuitiva para manejar Gitflow sin necesidad de utilizar la línea de comandos. Desde su panel, se pueden iniciar y finalizar ramas de feature, release y hotfix mediante unos pocos clics.

En el caso de trabajar con proyectos en Visual Studio, se puede utilizar la extensión GitFlow.VS. Esta herramienta integra las operaciones de Gitflow directamente en el entorno de desarrollo, permitiendo a los desarrolladores gestionar el flujo de trabajo sin salir el IDE. La extensión añade menús y opciones contextuales para iniciar y finalizar ramas, así como para realizar fusiones y etiquetados.

Para proyectos que utilizan GitLab, la plataforma proporciona integraciones que facilitan la implementación de Gitflow. Mediante la configuración de pipelines de CI/CD, se automatizan procesos como pruebas, despliegues y fusiones basadas en las convenciones de ramas de Gitflow. De esta forma, al crear una nueva rama de feature, se puede desencadenar automáticamente un pipeline que ejecute pruebas unitarias.

También existen scripts y herramientas de línea de comandos que permiten personalizar Gitflow. Por ejemplo, se pueden crear hooks de Git que verifiquen convenciones de nombres de ramas o que automaticen actualizaciones en archivos de versión durante el proceso de liberación.

Otra herramienta es GitVersion, que ayuda a gestionar el versionado semántico en proyectos que siguen Gitflow. Analiza el historial de Git y las ramas para determinar automáticamente el siguiente número de versión.

En entornos que requieren automatización avanzada, se pueden desarrollar scripts personalizados utilizando lenguajes como Python o Bash. Estos scripts pueden integrar operaciones de Gitflow con otros sistemas, como gestores de tareas o herramientas de despliegue.

CONSTRUYE TU CARRERA EN IA Y PROGRAMACIÓN SOFTWARE

Accede a +1000 lecciones y cursos con certificado. Mejora tu portfolio con certificados de superación para tu CV.

30 % DE DESCUENTO

Plan mensual

19.00 /mes

13.30 € /mes

Precio normal mensual: 19 €
63 % DE DESCUENTO

Plan anual

10.00 /mes

7.00 € /mes

Ahorras 144 € al año
Precio normal anual: 120 €
Aprende Git online

Ejercicios de esta lección Gitflow

Evalúa tus conocimientos de esta lección Gitflow con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Git

Accede a todas las lecciones de Git y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Accede GRATIS a Git y certifícate

Certificados de superación de Git

Supera todos los ejercicios de programación del curso de Git y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender la organización jerárquica de Gitflow.- Identificar los tipos de ramas y sus propósitos.- Aplicar convenciones para crear y fusionar ramas.- Implementar Gitflow con herramientas de automatización.