Git Flow
Git Flow es un modelo de ramas basado en Git, diseñado para ayudar a los equipos a gestionar y publicar software de manera más eficiente.
Git Flow fue propuesto por Vincent Driessen en 2010, y mediante un conjunto estándar de nomenclatura de ramas y flujos de trabajo, hace que los procesos de desarrollo, prueba y publicación sean más ordenados y eficientes.
Git Flow se compone principalmente de los siguientes tipos de ramas:master、develop、feature、release、hotfix。
Instalación de Git Flow
Linux
Debian/Ubuntu:
sudo apt-get install git-flow
Fedora:
sudo dnf install gitflow sudo apt-get install git-flow
macOS
En macOS, puedes usar Homebrew para instalar Git Flow:brew install git-flow
Instalación desde el código fuente
Si el gestor de paquetes de tu distribución no incluye Git Flow, también puedes instalarlo desde el código fuente:
git clone https://github.com/nvie/gitflow.git cd gitflow sudo make install
Una vez completada la instalación, puedes verificar si Git Flow se instaló correctamente con el siguiente comando:
git flow version
Windows
En Windows, puedes instalar Git Flow de las siguientes maneras:
-
Usar Git for Windows: Git for Windows incluye Git Flow. PuedesGit for Windowsinstalar Git y luego usar Git Bash para utilizar Git Flow.
-
Usar Scoop: Si usas la herramienta de gestión de paquetes Scoop, puedes instalar Git Flow con el siguiente comando:
scoop install git-flow
-
Usar Chocolatey: Si usas la herramienta de gestión de paquetes Chocolatey, puedes instalar Git Flow con el siguiente comando:
choco install gitflow
Modelo de ramas de Git Flow
masterRama:
- Mantiene siempre un estado estable y listo para publicar.
- Cada vez que se publica una nueva versión, desde
developla rama se fusiona enmasterla rama.
developRama:
- Se utiliza para integrar todas las ramas de desarrollo.
- Representa el último progreso del desarrollo.
- Las ramas de características, las ramas de publicación y las ramas de corrección se ramifican desde aquí y finalmente se fusionan de vuelta aquí.
featureRama:
- Se utiliza para desarrollar nuevas funcionalidades.
- desde
developLa rama se crea, y una vez finalizado el desarrollo, se fusiona de vuelta adevelopla rama. - Convención de nomenclatura:
feature/feature-name。
releaseRama:
- Se utiliza para preparar la publicación de una nueva versión.
- desde
developSe crea desde la rama, se realizan las últimas pruebas y correcciones, y luego se fusiona de vuelta adevelopymasterla rama, y se etiqueta con la versión. - Convención de nomenclatura:
release/release-name。
hotfixRama:
- Se utiliza para corregir problemas urgentes.
- desde
masterSe crea desde la rama, y una vez completada la corrección, se fusiona de vuelta amasterydevelopla rama, y se etiqueta con la versión. - Convención de nomenclatura:
hotfix/hotfix-name。

Principios de operación de las ramas
- Cada commit en la rama Master debe tener una etiqueta (tag), y la rama Develop se crea a partir de Master.
- Una vez completada la rama Feature, se fusiona de vuelta a la rama Develop y normalmente se elimina dicha rama.
- La rama Release se crea a partir de Develop, se utiliza para pruebas y corrección de errores; tras la publicación, se fusiona de vuelta a Master y Develop, y se etiqueta con el número de versión.
- La rama Hotfix se crea a partir de Master; una vez completada, se fusiona de vuelta a Master y Develop, y se etiqueta con un tag.1。
Ejemplos de comandos de Git Flow
- Iniciar una rama Feature:
git flow feature start MYFEATURE - Completar una rama Feature:
git flow feature finish MYFEATURE - Iniciar una rama Release:
git flow release start RELEASE [BASE] - Completar una rama Release: fusionar en Master y Develop, etiquetar con un tag, eliminar la rama Release.
- Iniciar una rama Hotfix:
git flow hotfix start HOTFIX [BASE] - Completar una rama Hotfix: fusionar en Master y Develop, etiquetar con un tag, eliminar la rama Hotfix.
Flujo de trabajo de Git Flow
1. Inicializar Git Flow
Primero, inicializa Git Flow en el proyecto. Puedes usar un complemento de Git Flow (por ejemplo,git-flow) para simplificar la operación.
git flow init
Al inicializar, debes configurar las reglas de nomenclatura de ramas y la rama predeterminada.
2. Crear una rama de funcionalidad
Cuando se comienza a desarrollar una nueva funcionalidad, desdedevelopla rama se crea una rama de funcionalidad.
git flow feature start feature-name
Una vez completado el desarrollo, se fusiona la rama de funcionalidad de vuelta adevelopla rama, y se elimina la rama de funcionalidad.
git flow feature finish feature-name
3. Crear una rama de publicación
Cuando se está preparando la publicación de una nueva versión, desdedevelopla rama se crea una rama de publicación.
git flow release start release-name
Se realizan las últimas pruebas y correcciones en la rama de publicación; una vez lista para publicar, se fusiona la rama de publicación de vuelta adevelopymasterla rama, y se etiqueta con la versión.
git flow release finish release-name
4. Crear una rama de corrección
Cuando se detecta un problema que requiere una corrección urgente, desdemasterla rama se crea una rama de corrección.
git flow hotfix start hotfix-name
Una vez completada la corrección, se fusiona la rama de corrección de vuelta amasterydevelopla rama, y se etiqueta con la versión.
git flow hotfix finish hotfix-name
Ejemplo práctico
A continuación se muestra un ejemplo completo de uso real de Git Flow.
Inicializar Git Flow:
git flow init
Crear y completar una rama de funcionalidad:
git flow feature start new-feature # 开发新功能 git flow feature finish new-feature
Crear y completar una rama de publicación:
git flow release start v1.0.0 # 测试和修复 git flow release finish v1.0.0
Crear y completar una rama de corrección:
git flow hotfix start hotfix-1.0.1. # 修复紧急问题 git flow hotfix finish hotfix-1.0.1
Ventajas y desventajas
Ventajas
- Modelo de ramas claro: Las reglas claras de nomenclatura y uso de ramas hacen que el proceso de desarrollo sea ordenado.
- Aislamiento de desarrollo y publicación: La separación de los procesos de desarrollo y publicación reduce el impacto de la incertidumbre del desarrollo en la publicación.
- Gestión de versiones: Cada publicación y corrección se etiqueta con la versión, lo que facilita el seguimiento y la gestión.
Desventajas
- Complejidad: Para equipos pequeños o proyectos simples, el modelo de ramas de Git Flow puede resultar demasiado complejo.
- Fusiones frecuentes: En equipos grandes, las fusiones frecuentes de ramas pueden aumentar los conflictos de fusión.
Git Flow es un modelo estructurado de gestión de ramas que, mediante la definición de ramas y flujos de trabajo claros, ayuda a los equipos a gestionar mejor el proceso de desarrollo y publicación de software. Aunque añade cierta complejidad, para proyectos grandes y colaboración en equipo, Git Flow ofrece un sólido soporte y capacidad de gestión.
Otras extensiones