El flujo de trabajo Git Flow es una estrategia de ramificación que proporciona un marco robusto para gestionar el desarrollo de software. Fue popularizado por Vincent Driessen y se basa en el uso de ramas específicas para diferentes propósitos, lo que facilita la organización y el control del desarrollo de proyectos.

Conceptos Clave de Git Flow

  1. Rama master:

    • Contiene el código de producción.
    • Siempre debe estar en un estado estable y listo para ser desplegado.
  2. Rama develop:

    • Contiene el código en desarrollo.
    • Es la rama base para todas las nuevas características y mejoras.
  3. Ramas de características (feature):

    • Se crean a partir de develop.
    • Se utilizan para desarrollar nuevas funcionalidades.
    • Se fusionan de nuevo en develop una vez completadas.
  4. Ramas de lanzamiento (release):

    • Se crean a partir de develop cuando se está preparando una nueva versión.
    • Permiten realizar pruebas y correcciones de errores antes de fusionarse en master y develop.
  5. Ramas de corrección (hotfix):

    • Se crean a partir de master para corregir errores críticos en producción.
    • Se fusionan de nuevo en master y develop una vez solucionados.

Flujo de Trabajo Git Flow en Acción

  1. Configuración Inicial

Para utilizar Git Flow, primero necesitas instalar las extensiones de Git Flow. Puedes hacerlo con los siguientes comandos:

# En sistemas basados en Debian/Ubuntu
sudo apt-get install git-flow

# En sistemas basados en macOS
brew install git-flow

Una vez instalado, inicializa Git Flow en tu repositorio:

git flow init

Este comando te guiará a través de la configuración inicial, donde se te pedirá que confirmes los nombres de las ramas principales (master y develop) y los prefijos para las ramas de características, lanzamiento y corrección.

  1. Creación de una Rama de Característica

Para comenzar a trabajar en una nueva funcionalidad, crea una rama de característica:

git flow feature start nombre-de-la-caracteristica

Esto creará y cambiará a una nueva rama basada en develop.

  1. Finalización de una Rama de Característica

Una vez que hayas terminado de trabajar en la funcionalidad, finaliza la rama de característica:

git flow feature finish nombre-de-la-caracteristica

Esto fusionará la rama de característica de nuevo en develop y eliminará la rama de característica.

  1. Creación de una Rama de Lanzamiento

Cuando estés listo para preparar una nueva versión, crea una rama de lanzamiento:

git flow release start nombre-de-la-version

Esto creará una nueva rama basada en develop para realizar pruebas y correcciones de errores.

  1. Finalización de una Rama de Lanzamiento

Una vez que la versión esté lista para ser desplegada, finaliza la rama de lanzamiento:

git flow release finish nombre-de-la-version

Esto hará lo siguiente:

  • Fusionará la rama de lanzamiento en master.
  • Etiquetará la versión en master.
  • Fusionará la rama de lanzamiento de nuevo en develop.
  • Eliminará la rama de lanzamiento.

  1. Creación de una Rama de Corrección

Si necesitas corregir un error crítico en producción, crea una rama de corrección:

git flow hotfix start nombre-del-hotfix

Esto creará una nueva rama basada en master para realizar la corrección.

  1. Finalización de una Rama de Corrección

Una vez que el error esté corregido, finaliza la rama de corrección:

git flow hotfix finish nombre-del-hotfix

Esto hará lo siguiente:

  • Fusionará la rama de corrección en master.
  • Etiquetará la corrección en master.
  • Fusionará la rama de corrección de nuevo en develop.
  • Eliminará la rama de corrección.

Ejemplo Práctico

Supongamos que estás trabajando en un proyecto y necesitas agregar una nueva funcionalidad llamada "login". Aquí tienes un ejemplo paso a paso de cómo usar Git Flow:

  1. Inicializa Git Flow:

    git flow init
    
  2. Crea una rama de característica:

    git flow feature start login
    
  3. Desarrolla la funcionalidad en la rama feature/login:

    # Realiza cambios y confirma
    git add .
    git commit -m "Añade funcionalidad de login"
    
  4. Finaliza la rama de característica:

    git flow feature finish login
    
  5. Crea una rama de lanzamiento:

    git flow release start 1.0.0
    
  6. Realiza pruebas y correcciones en la rama release/1.0.0:

    # Realiza cambios y confirma
    git add .
    git commit -m "Corrige errores en la funcionalidad de login"
    
  7. Finaliza la rama de lanzamiento:

    git flow release finish 1.0.0
    
  8. Si encuentras un error crítico en producción, crea una rama de corrección:

    git flow hotfix start login-fix
    
  9. Corrige el error en la rama hotfix/login-fix:

    # Realiza cambios y confirma
    git add .
    git commit -m "Corrige error crítico en la funcionalidad de login"
    
  10. Finaliza la rama de corrección:

    git flow hotfix finish login-fix
    

Conclusión

El flujo de trabajo Git Flow proporciona una estructura clara y organizada para gestionar el desarrollo de software. Al utilizar ramas específicas para diferentes propósitos, puedes mantener un control preciso sobre el estado de tu proyecto y facilitar la colaboración entre desarrolladores. Con la práctica, Git Flow puede convertirse en una herramienta invaluable para cualquier equipo de desarrollo.

Dominando Git: De Principiante a Avanzado

Módulo 1: Introducción a Git

Módulo 2: Operaciones Básicas de Git

Módulo 3: Ramas y Fusión

Módulo 4: Trabajando con Repositorios Remotos

Módulo 5: Operaciones Avanzadas de Git

Módulo 6: Herramientas y Técnicas de Git

Módulo 7: Estrategias de Colaboración y Flujo de Trabajo

Módulo 8: Mejores Prácticas y Consejos de Git

Módulo 9: Solución de Problemas y Depuración

Módulo 10: Git en el Mundo Real

© Copyright 2024. Todos los derechos reservados