Iagovar - Git Flow - Chuleta de comandos, qué hace cada rama, etc

Git Flow - Chuleta de comandos, qué hace cada rama, etc

Git Flow es uno de los flujos de trabajo más comunes. Encontrarás una explicación breve, a modo de referencia.
Gitflow branches model

Ya hemos tratado hablado de workflows de Git en un artículo anterior.

Git Flow es uno de los workflows de Git más famosos, que se basa en la creación y uso de ramas específicas para cada etapa del desarrollo de un proyecto. La imagen anterior explica muy bien cuál es el flujo de trabajo de Git Flow.

Básicamente tenemos dos ramas principales:

Además de estas dos ramas principales, Git Flow establece la creación de ramas secundarias para manejar diferentes tipos de cambios:

Comandos más comunes en Git Flow

Comando Descripción
git flow init Inicializa un repositorio local y establece la estructura de ramas de Git Flow, creando las ramas develop, master y una serie de ramas auxiliares para el manejo de releases, hotfixes y features
git flow feature start nombre-de-la-feature Crea una nueva rama para el desarrollo de una nueva característica, basándose en la rama develop, y la llama feature/nombre-de-la-feature.
git flow feature finish nombre-de-la-feature Finaliza el desarrollo de una característica, fusionando los cambios en la rama develop y eliminando la rama feature/nombre-de-la-feature.
git flow release start nombre-version Inicia una nueva release basándose en la rama develop, creando una rama release/nombre-de-la-release. Habitualmente de nombre se usa un número, pero también vale un string.
git flow release finish nombre-version Finaliza una release, fusionando los cambios en la rama master y en la rama develop, y etiquetando el commit con el nombre de la release.
git flow hotfix start nombre-del-hotfix Inicia un hotfix basándose en la rama master, creando una rama hotfix/nombre-del-hotfix.
git flow hotfix finish nombre-del-hotfix Finaliza un hotfix, fusionando los cambios en la rama master y en la rama develop, y etiquetando el commit con el nombre del hotfix.

Cómo instalar Git Flow

Aunque se puede trabajar en un flujo de trabajo Git Flow con los comandos que ya conocemos de Git, hay herramientas para Git que nos automatizan una gran parte del proceso.

Desventajas de Git Flow

Si buscs información sobre el tema vas a encontrar cantidad de opiniones. En general, se puede resumir en una palabra: Complejidad.

Este flujo de trabajo requiere muchas ramas y muchos merges, lo que burocratiza aún más la notable complejidad de Git, y el número de merges puede provocar problemas según se avanza en el proyecto, en sistemas de integración y despliegue contínuo, y por el simple hecho de que, visualmente, se hará mucho más tedioso rastrear cualquier cosa en el historial.

El autor original de Gitflow también apunta que este flujo es útil para desarrollos donde tienes que soportar múltiples versiones del mismo software, y que esto no es habitual en la mayor parte del software actual, que corre en un servidor web. Para este caso recomienta Github Flow, más sencillo.

Más información