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
-
Rama
master
:- Contiene el código de producción.
- Siempre debe estar en un estado estable y listo para ser desplegado.
-
Rama
develop
:- Contiene el código en desarrollo.
- Es la rama base para todas las nuevas características y mejoras.
-
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.
- Se crean a partir de
-
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
ydevelop
.
- Se crean a partir de
-
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
ydevelop
una vez solucionados.
- Se crean a partir de
Flujo de Trabajo Git Flow en Acción
- 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:
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.
- Creación de una Rama de Característica
Para comenzar a trabajar en una nueva funcionalidad, crea una rama de característica:
Esto creará y cambiará a una nueva rama basada en develop
.
- Finalización de una Rama de Característica
Una vez que hayas terminado de trabajar en la funcionalidad, finaliza la rama de característica:
Esto fusionará la rama de característica de nuevo en develop
y eliminará la rama de característica.
- Creación de una Rama de Lanzamiento
Cuando estés listo para preparar una nueva versión, crea una rama de lanzamiento:
Esto creará una nueva rama basada en develop
para realizar pruebas y correcciones de errores.
- Finalización de una Rama de Lanzamiento
Una vez que la versión esté lista para ser desplegada, finaliza la rama de lanzamiento:
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.
- Creación de una Rama de Corrección
Si necesitas corregir un error crítico en producción, crea una rama de corrección:
Esto creará una nueva rama basada en master
para realizar la corrección.
- Finalización de una Rama de Corrección
Una vez que el error esté corregido, finaliza la rama de corrección:
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:
-
Inicializa Git Flow:
git flow init
-
Crea una rama de característica:
git flow feature start login
-
Desarrolla la funcionalidad en la rama
feature/login
:# Realiza cambios y confirma git add . git commit -m "Añade funcionalidad de login"
-
Finaliza la rama de característica:
git flow feature finish login
-
Crea una rama de lanzamiento:
git flow release start 1.0.0
-
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"
-
Finaliza la rama de lanzamiento:
git flow release finish 1.0.0
-
Si encuentras un error crítico en producción, crea una rama de corrección:
git flow hotfix start login-fix
-
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"
-
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
- Creando un Repositorio
- Clonando un Repositorio
- Flujo de Trabajo Básico de Git
- Preparando y Confirmando Cambios
- Visualizando el Historial de Confirmaciones
Módulo 3: Ramas y Fusión
- Entendiendo las Ramas
- Creando y Cambiando Ramas
- Fusionando Ramas
- Resolviendo Conflictos de Fusión
- Gestión de Ramas
Módulo 4: Trabajando con Repositorios Remotos
- Entendiendo los Repositorios Remotos
- Añadiendo un Repositorio Remoto
- Obteniendo y Extrayendo Cambios
- Empujando Cambios
- Rastreando Ramas
Módulo 5: Operaciones Avanzadas de Git
- Rebasing
- Cherry-Picking de Confirmaciones
- Guardando Cambios
- Etiquetando Confirmaciones
- Revirtiendo Confirmaciones
Módulo 6: Herramientas y Técnicas de Git
Módulo 7: Estrategias de Colaboración y Flujo de Trabajo
- Forking y Pull Requests
- Revisiones de Código con Git
- Flujo de Trabajo Git Flow
- GitHub Flow
- Integración Continua con Git
Módulo 8: Mejores Prácticas y Consejos de Git
- Escribiendo Buenos Mensajes de Confirmación
- Manteniendo un Historial Limpio
- Ignorando Archivos con .gitignore
- Mejores Prácticas de Seguridad
- Consejos de Rendimiento
Módulo 9: Solución de Problemas y Depuración
- Problemas Comunes de Git
- Deshaciendo Cambios
- Recuperando Confirmaciones Perdidas
- Tratando con Repositorios Corruptos
- Técnicas Avanzadas de Depuración