Desarrollo de Software Implementando Gitflow
- Mauricio ECR
- DevOps
- 19 Mar, 2025
Introducción
El desarrollo de software requiere metodologías y flujos de trabajo que permitan un control eficiente del código fuente. Uno de los enfoques más utilizados para la gestión de versiones es Gitflow, una estrategia basada en Git que organiza el trabajo en ramas bien definidas.
Este artículo explora qué es Gitflow, su filosofía, los problemas que resuelve y cómo implementarlo paso a paso en un proyecto. También se comparará el uso de Gitflow con los comandos básicos de Git para quienes prefieran un enfoque manual.
¿Qué es Gitflow?
Gitflow es un modelo de ramificación para Git propuesto por Vincent Driessen. Define un conjunto de reglas y procedimientos para gestionar las diferentes etapas del desarrollo de software, asegurando estabilidad en la rama principal mientras se permite la integración de nuevas funcionalidades de manera organizada.
Filosofía de Gitflow
Gitflow se basa en la idea de separar el desarrollo en ramas específicas con propósitos bien definidos:
Explicación de cada rama en Gitflow
- main: Contiene la versión estable y en producción del software. Solo se realizan fusiones de versiones terminadas y correcciones críticas.
- develop: Es la rama principal de desarrollo donde se integran nuevas funcionalidades antes de ser lanzadas.
- feature: Se crean a partir de
developpara el desarrollo de nuevas características. Una vez terminadas, se fusionan de nuevo endevelop. - release: Se crean a partir de
developcuando se prepara una nueva versión. Aquí se realizan pruebas finales antes de integrarla enmain. - hotfix: Se crean a partir de
mainpara corregir errores críticos en producción y luego se fusionan enmainydevelop. - bugfix: Similar a
hotfix, pero se crean a partir dedeveloppara corregir errores antes de un lanzamiento.
¿Qué busca solucionar?
Gitflow aborda varios problemas comunes en el desarrollo de software, como:
- Integración desorganizada de nuevas características.
- Problemas al manejar versiones de lanzamiento.
- Falta de control sobre la corrección de errores en producción.
¿Cómo propone solucionarlo?
Gitflow impone un flujo de trabajo con reglas claras para la creación, fusión y eliminación de ramas, asegurando estabilidad y organización en el repositorio.
Implementación de Gitflow paso a paso
A continuación, se detalla cómo implementar Gitflow en un proyecto, tanto utilizando la herramienta git-flow como con comandos básicos de Git.
1. Inicializar un repositorio con Gitflow
Usando la herramienta git-flow:
git flow init
Manualmente con Git:
git init
git branch -M main
git checkout -b develop
2. Crear una nueva funcionalidad (feature)
Con git-flow:
git flow feature start nueva-funcionalidad
Con Git básico:
git checkout -b feature/nueva-funcionalidad develop
3. Finalizar una funcionalidad
Con git-flow:
git flow feature finish nueva-funcionalidad
Con Git:
git checkout develop
git merge --no-ff feature/nueva-funcionalidad
git branch -d feature/nueva-funcionalidad
4. Preparar una versión de lanzamiento
Con git-flow:
git flow release start v1.0.0
Con Git:
git checkout -b release/v1.0.0 develop
5. Finalizar una versión de lanzamiento
Con git-flow:
git flow release finish v1.0.0
Con Git:
git checkout main
git merge --no-ff release/v1.0.0
git tag -a v1.0.0 -m "Versión 1.0.0"
git checkout develop
git merge main
git branch -d release/v1.0.0
6. Aplicar una corrección en producción (hotfix)
Con git-flow:
git flow hotfix start fix-critico
Con Git:
git checkout -b hotfix/fix-critico main
Para finalizar el hotfix: Con git-flow:
git flow hotfix finish fix-critico
Con Git:
git checkout main
git merge --no-ff hotfix/fix-critico
git tag -a v1.0.1 -m "Corrección crítica"
git checkout develop
git merge main
git branch -d hotfix/fix-critico
Ventajas del uso de Gitflow
- Estructura clara: Organización de ramas para cada propósito.
- Mayor estabilidad: La rama principal se mantiene siempre en estado funcional.
- Mejor colaboración: Facilita la integración de cambios en equipos grandes.
- Gestión eficiente de versiones: Simplifica la publicación de nuevas versiones y correcciones de errores.
Conclusión
Gitflow es un modelo altamente eficiente para la gestión de versiones en proyectos de software. Aunque la herramienta git-flow automatiza muchos pasos, comprender los comandos básicos de Git permite un control más detallado del flujo de trabajo. Su implementación mejora la organización, facilita el trabajo en equipo y contribuye a la estabilidad del código en producción.