Gitflow es un modelo alternativo de creación de ramas en Git en el que se utilizan ramas de función y varias ramas principales.
Se basa en dos ramas principales: master
y develop
(o dev
).
Master:
La rama master
es estable y siempre contiene el código en producción. Se considera la versión más reciente y estable del proyecto.
Develop:
La rama develop
es donde se integran todas las características nuevas. Es menos estable que master, pero se utiliza para pruebas y desarrollo
continuo.
El flujo de trabajo típico de GitFlow implica varias ramas adicionales:
Feature Branches (ramas de características):
Se crean a partir de develop
y se utilizan para desarrollar nuevas características. Una vez completadas, se fusionan de nuevo en develop
.
Release Branches (ramas de lanzamiento):
Se crean a partir de develop
cuando se está preparando una nueva versión para lanzamiento. Aquí se realizan correcciones de errores y ajustes
finales antes de la publicación. Una vez listo, se fusiona tanto en master
como en develop
, y se etiqueta con un número de versión.
Hotfix Branches (ramas de corrección de errores):
Se crean a partir de master
y se utilizan para corregir errores críticos en producción. Después de solucionar el problema, se fusionan tanto en
master
como en develop
.
Este flujo de trabajo permite un desarrollo estructurado, con versiones estables en master
, desarrollo continuo en develop
, y características y correcciones de errores gestionadas de forma ordenada en ramas separadas.
git flow init
Este comando inicializa GitFlow en el repositorio actual, creando las ramas master
y develop
y configurando el flujo de trabajo.
git flow feature start <nombre_caracteristica>
Crea una nueva rama de característica basada en develop
, donde puedes trabajar en una nueva funcionalidad.
git flow feature finish <nombre_caracteristica>
Fusiona la rama de característica en develop
y la elimina.
git flow release start <nombre_version>
Crea una nueva rama de lanzamiento basada en develop
, donde puedes realizar correcciones finales antes del lanzamiento.
git flow release finish <nombre_version>
Fusiona la rama de lanzamiento en master
y develop
, estableciendo una nueva versión. También elimina la rama de lanzamiento.
git flow hotfix start <nombre_correccion>
Crea una nueva rama de corrección de errores basada en master
, para abordar problemas críticos en producción.
git flow hotfix finish <nombre_correccion>
Fusiona la rama de corrección de errores en master
y develop
, y elimina la rama de corrección de errores.