Skip to content

jesusmlops/gitflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Guía Completa de GitFlow

Bienvenido a la guía completa de GitFlow, una estrategia de ramificación en Git diseñada para ayudarte a gestionar el ciclo de vida de tu proyecto de manera estructurada, colaborativa y profesional. En este documento encontrarás desde la configuración inicial hasta ejemplos prácticos y mejores prácticas para aprovechar al máximo esta metodología.


Tabla de Contenidos


Introducción

GitFlow es una metodología para el manejo de ramas en Git que simplifica la colaboración y la integración continua en proyectos de software. Está pensada tanto para desarrolladores individuales como para equipos, permitiendo separar claramente las fases de desarrollo, preparación de versiones y corrección de errores. Con GitFlow, cada tarea o cambio se gestiona en una rama dedicada, lo que facilita el seguimiento y la integración de nuevas funcionalidades sin interrumpir el código estable.


¿Qué es GitFlow?

GitFlow propone una estructura de ramas que cubre distintas fases del ciclo de desarrollo:

  • master o main: Contiene el código en producción, representando la versión estable y lista para usar.
  • develop: Es la rama principal de integración donde se consolidan todas las nuevas funcionalidades en desarrollo.
  • feature: Ramas derivadas de develop para trabajar en nuevas características sin afectar la rama de desarrollo.
  • release: Ramas que preparan el código para ser lanzado a producción. Se utilizan para realizar pruebas finales y ajustes.
  • hotfix: Ramas creadas a partir de master o main para solucionar errores críticos en producción de manera urgente.
  • support: (Opcional) Ramas destinadas al mantenimiento de versiones antiguas del software.

Esta estructura permite un control preciso sobre cada etapa del desarrollo y facilita la colaboración en equipos grandes.


Ventajas de Utilizar GitFlow

  • Organización: Separa claramente el desarrollo de nuevas funcionalidades y la corrección de errores.
  • Colaboración: Facilita el trabajo en equipo al definir roles y responsabilidades a través de ramas específicas.
  • Integración Continua: Permite integrar y probar nuevas características en un entorno controlado antes de pasar a producción.
  • Control de Versiones: Ayuda a mantener un historial limpio y comprensible del desarrollo del proyecto.

Configuración Inicial

Antes de comenzar a trabajar con GitFlow, es necesario configurar las ramas principales y los prefijos para cada tipo de rama. Una configuración típica es la siguiente:

  • Rama de producción: master o main
  • Rama de desarrollo: develop
  • Prefijos de ramas:
    • Features: feature/
    • Releases: release/
    • Hotfixes: hotfix/
    • Soporte: support/

Para iniciar la configuración en tu repositorio, ejecuta:

git flow init

Flujo de Trabajo en GitFlow

El flujo de trabajo con GitFlow se puede resumir en los siguientes pasos:

  1. Desarrollo de Funcionalidades:
    Crea una rama feature a partir de develop para cada nueva característica o mejora.

  2. Preparación de Lanzamientos:
    Una vez que se han completado varias funcionalidades, se crea una rama release desde develop para afinar detalles y realizar pruebas antes del lanzamiento.

  3. Corrección de Errores Críticos:
    Cuando se detecta un fallo en producción, se genera una rama hotfix desde master o main. Tras corregir el error, se fusiona tanto en master como en develop.

Este esquema asegura que el código en producción siempre esté libre de errores críticos y que las nuevas funcionalidades se integren de forma controlada.


Comandos y Ejemplos

Ramas Feature

Para iniciar una nueva feature:

git flow feature start nombre-de-la-feature

Una vez completada la funcionalidad, finaliza y fusiona la rama:

git flow feature finish nombre-de-la-feature

Ramas Release

Para preparar una nueva versión:

git flow release start versión-X.Y.Z

Después de realizar pruebas y ajustes, finaliza la release:

git flow release finish versión-X.Y.Z

Este comando fusiona los cambios en master y develop y crea una etiqueta (tag) para el lanzamiento.

Ramas Hotfix

Cuando se necesita corregir un error crítico en producción:

git flow hotfix start nombre-del-hotfix

Una vez corregido el error, finaliza el hotfix:

git flow hotfix finish nombre-del-hotfix

Este proceso fusiona la corrección en ambas ramas, master y develop, asegurando que el error no se repita.

Ejemplo Práctico Completo

Supongamos que estás desarrollando una nueva funcionalidad llamada "login-social". El flujo sería:

  1. Crear la feature:

    git flow feature start login-social

  2. Desarrollar y hacer commits en la rama feature/login-social.

  3. Finalizar la feature y fusionarla en develop:

    git flow feature finish login-social

  4. Cuando se reúnen suficientes funcionalidades, se inicia una release:

    git flow release start 1.2.0

  5. Realizar ajustes, pruebas y correcciones en la rama release/1.2.0.

  6. Finalizar la release:

    git flow release finish 1.2.0

  7. Si en producción surge un problema, se crea un hotfix:

    git flow hotfix start corregir-error-login

  8. Aplicar la solución y finalizar el hotfix:

    git flow hotfix finish corregir-error-login


Consejos y Mejores Prácticas

  • Planifica tus ramas: Define claramente el propósito de cada rama antes de comenzar el desarrollo.

  • Comunica los cambios: Mantén a tu equipo informado sobre la creación y finalización de ramas.

  • Usa etiquetas (tags): Marca las versiones en la rama master para tener un historial claro de los lanzamientos.

  • Revisa el historial: Realiza revisiones periódicas del log de Git para asegurarte de que las ramas se integren correctamente.

  • Automatización: Considera integrar herramientas de CI/CD para automatizar pruebas y despliegues en cada fusión.


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published