guia gitflow ernesto flames

Gitflow Guía básica

Última revisión: 22 noviembre 2022

En esta oportunidad quiero hablar de una metodología para el uso de Git, llamada GitFlow

Luego de trabajar en una compañía dedicada 100% a la entrega de servicios basados en tecnología era increíble como después de años teniendo tantos desarrolladores, tener orden en los desarrollos y un control eficiente de ellos era como pedirle a un asiático que no coma arroz más nunca, es decir, imposible.

Incluso en algún momento, cuando se nos une un partner con otro pool de developers yo llegué a pensar que tendríamos luz y ¡vaya sorpresa!, tampoco tenían ni idea. Lo que me llevó a pensar que no es tan común como yo creía y me inspiré a crear esta mini guía.

Que es GitFLow

Creado por Vincent Driessen, Gitflow no es más que una forma de usar Git, más ordenada. Se entiende como un modelo alternativo de creación de ramas en Git en el que se utilizan ramas de función y varias ramas principales con el único objetivo de mantener siempre el código lo más aislado posible de las ramas donde trabajen más personas.

Esto ayuda a tener controlado los nuevos features o fixes que se van haciendo a un mismo sistema y cuyo código repose en un sistema git (puede ser bitbucket, gitlab o github, todo es lo mismo).

Finalidad de gitflow

Aplicando gitflow en nuestros desarrollos podemos llegar a tener un mejor control de los cambios, lo que nos ayuda muchísimo a desplegar calidad. Sobre todo si en nuestra empresa estamos usando métodos agiles de desarrollo como scrum por ejemplo.

Requitos para Gitflow

Uno solo, saber las bases de Git.

Ramas de función

Se entiende como ramas de función a las ramas que vayamos creando que tengan una función especifica. Por ejemplo, la rama de un servidor de producción tiene una única función que es almacenar el código que tiene que estar en producción.

Lo mismo si tenemos servidores de desarrollo donde haremos QA y nuestras ramas locales en donde estamos escribiendo código nuevo.

Cada rama debe tener una única función establecida, en el siguiente grafico tenemos una de las distribuciones más conocidas y usadas. Recuerda que gitflow no es una regla inmutable, son solo una serie de recomendaciones para trabajar mejor y por ende, esto puedes ajustarlo a tus necesidades.

Ramas de funcion en gitflow

Si te das cuenta, en este caso estamos estableciendo ramas por la función en donde debe estar desplegada. Tenemos 3 lugares

Master (servidor de produccion), esta rama no se toca y se suele llamar main, master o production. Contiene todo el codigo que el cliente finalmente recibe en su aplicación.

Develop (entornos de desarrollo, testing o demos), inicia como una copia de lo que tenemos en producción y es ella quien va a recibir los features y fixes que vamos desarrollando.

Una vez todos los desarrollos que queremos entregar esten listos, probados y certificados, esta rama se unifica con la rama Master

Features/Hotfix (local): Son las ramas que los desarrolladores van a ir creando en su local, estas ramas deben partir de la rama Develop y cuando el desarrollador culmine el entregable, se unifica nuevamente con la rama Develop.

Veámoslo ahora un poco más gráfico.

Gitflow en funcion de sus ramas

Notamos como de master sale develop y a su vez, de develop salen los features, una vez que el desarrollo está completado, se cumple nuevamente la misma ruta pero al revés, primero se unifican todos los features a develop y luego a master.

Solo debemos tener 1 master, 1 develop pero tanto los features como los fixes pueden ser todos los que sean necesarios.

Nuevamente, este es el texto original de como fue pensado, sin embargo, puedes adaptarlo a tu modelo de trabajo como gustes.

Tipificación de las ramas

El creador Vincent Driessen nos deja unos pequeños lineamientos para crear los nombres de estas ramas de función:

master, para la rama prinpcial

develop, para la rama que unifica todos los desarrollos

feature/nombre-desarrollo-corto, para las nuevas características.

fix/nombre-del-arreglo-del-bug, para las ramas que pretenden arreglar errores en nuestro sistema.

Todo en minúsculas, por ejempo:

Supongamos que queremos agregar un botón nuevo en la pantalla principal de nuestra aplicación.

  • Creamos una nueva rama que parte de develop y le anteponemos al nombre la palabra feature, indicando que es una nueva característica que queremos arreglar, quedando el nombre de la rama de la siguiente manera: feature/agregando-boton-pantalla-principal.
  • En esta rama agregamos el codigo del nuevo botón y finalmente hacemos un Pull Request a Develop (en caso que en el equipo usen Pull Request) o directamente haces el merge a Develop.
  • QA prueba este botón y cuando dan el “aprobado” entonces pasamos este desarrollo a producción, haciendo merge (unificando) la rama develop que ya tiene nuestro botón con la rama master.

Ahora supongamos que queremos arreglar el botón, porque por alguna razón nos quedó mal y QA tampoco se dio cuenta.

  • De la rama develop, que a este punto ya tiene nuestro desarrollo, creamos otra rama y le anteponemos al nombre la palabra fix, quedando así fix/boton-pantalla-principal.
  • Una vez terminado el desarrollo, el proceso siguiente es el mismo, primero a develop y cuando sea aprobado a master.

Con esto, logramos estandarizar todos los nombres de nuestra rama y al final del día, sabremos identificar fácilmente solamente por el nombre, qué contiene cada rama en nuestro repositorio git.

Para finalizar,

Comandos básicos de Gitflow

Te dejo una pequeña lista de los comandos que mas vas a usar para trabajar con gitflow:

Git checkout rama

Cambiamos la rama a la que hayamos indicado. Ejemplo, para cambiar a develop, Git checkout develop.

Git checkout -b rama

Crea una rama a partir de la rama en la que estemos situados.

Es parecido al comando anterior pero con el flag -b en vez de cambiarnos a una rama ya existente, primero crea una rama nueva con el nombre que le hayamos puesto y luego nos cambia a ella.

Git log

Muestra en pantalla el registro del repositorio que tenemos actualizado en nuestro equipo local. Super util para saber todos los commits que tiene la rama en la que estamos situados. Si usamos el flag —oneline nos da un resumen visual de este registro, ejemplo git log —oneline.

Git status

Este es un plus, porque si ya trabajas con git ya lo conoces, con este comando puedes ver el status de tu rama actual.

Aplicaciones para gitflow.

¿No se te dan las líneas de comando?, mi primera recomendación es que intentes dominar gitflow con línea de comandos, pero si aun así no te gusta, no te preocupes, existen aplicaciones gratuitas que te pueden ayudar incluso visualmente con esto, te dejo un par de ejemplos,

GitKraken

Gitkraken, interfaz gráfica para Git

Fíjate que la misma grafica que te expliqué más arriba, la aplicación te la entrega de forma vertical, donde la línea vertical de color azul celeste en el medio es nuestra rama master y a ella siempre terminan llegando todos los features (líneas hacia la derecha en diferentes colores).

Es la mas visual de todas las herramientas actuales y es gratis siempre y cuando uses repositorios públicos, si quieres usar repos privados debes pagar.

Sourcetree

Sourcetree, de atlassian

No tan visual como gitkraken pero también entrega la misma grafica con los cambios usando metodología gitflow donde todas las ramas apuntan a la rama master que esta situada a la izquierda, de color azul.

Esta si es gratis para todo lo que quieras usarla y es creada por la gente de Atlassian, los creadores de Bitbucket, una alternativa a Github.

Palabras finales

Debo comentarte que esta es la forma de usar gitflow por la vía manual, donde uno mismo crea las ramas, los nombres, etc…

Pero existe una extensión que puedes instalar a tu repositorio en el que con algunos comandos diferentes puedes hacer el mismo trabajo. Hay quien le parezca más fácil el método manual, pero hay otros que les parece más fácil usar la extensión git-flow.


Para ello, te dejo otro artículo de un blog amigo que te explica de forma fácil usar esta extensión

Sin más, espero que te sirva en tu día a día esta guía y así como ya muchas personas me han contactado por mi artículo de “Instalar OCI en Laragon” me puedes contactar y seguramente te doy una manito.

Saludos y happy coding.

Comparte este artículo
Facebook
Twitter
LinkedIn
WhatsApp
Email
Sobre el autor

Ernesto Flames

Diseñador y desarrollador web nacido en Caracas, amante de las nuevas tecnologías y comedor compulsivo de las galletas que hace mi esposa.
Ernesto Flames Diseñador Programador Web
Scroll to Top