Quiero hablar de una metodología para el uso de Git, llamada GitFlow
Luego de trabajar en una compañía Colombiana dedicada 100% a la entrega de servicios basados en tecnología, era increíble cómo tener orden en los desarrollos y un control eficiente de ellos era como pedirle a un asiático que no coma arroz nunca más, es decir, imposible.
¿Qué 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 controlados 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).

Aplicando gitflow en nuestros desarrollos, podemos llegar a tener un mejor control de los cambios, lo que nos ayuda muchísimo a desplegar calidad.
Requisitos para Gitflow
Uno solo, saber las bases de Git.
Ramas de función
Son las ramas que vayamos creando que tengan una función específica; por ejemplo: si tienes un servidor de prueba y uno de desarrollo, cada uno tendrá una rama específica para su función.
Cada rama debe tener una única función establecida; en el siguiente gráfico tenemos una de las distribuciones más conocidas y usadas. Recuerda que gitflow no es una regla inmutable, solo es una serie de recomendaciones para trabajar mejor y, por ende, esto puedes ajustarlo a tus necesidades.

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 producción): esta rama no se toca y se suele llamar main, master o production. Contiene todo el código 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 estén 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.

Notamos cómo 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.
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, la rama principal.
- develop, la rama que unifica todos los desarrollos.
- feature/nombre-desarrollo-corto, las nuevas características. Ejemplo feature/new-blue-button
- fix/nombre-del-arreglo-del-bug, las ramas que pretenden arreglar errores en nuestro sistema. fix/blue-button
Todo siempre en minúsculas.
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

Fíjate que es la misma gráfica que te expliqué más arriba. Es la más visual de todas las herramientas actuales y es gratis siempre y cuando uses repositorios públicos; si quieres usar repos privados, debes pagar.
Sourcetree

No tan visual como GitKraken, pero también entrega la misma gráfica con los cambios usando metodología Gitflow. 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
Obviamente, hay mucho más que abarcar de Gitflow y algunos equipos de desarrollo le agregan reglas a su gusto, pero con esta miniguía, tienes todo lo necesario para tener un repositorio con mucho más orden, compatible con equipos de trabajo grandes y bastante sencillo de implementar.
Sin más, espero que te sirva en tu día a día esta guía.
Saludos y happy coding.
