Que es Git Flow y porque tenemos que aprenderlo
Tags: github, git, gitflow, gitlab
Published: 2021-06-15 00:37:08

Todos damos por entendido que es git y, para quienes no lo saben, esto sirve para hacer un control de versionado sobre tu código. Escribiéndolo así a lo criollo: sirve para poder trabajar código de manera mas eficiente donde lo aloja una repo y de ahí varios desarrolladores clonan tal repo y lo modifican a su gusto o semejanza. 

> *Disclaimer: pido disculpas por la foto que elegí de portada, busque una foto que haya sacado con ramas y encontré esta de un viaje a Iguazú. Para la próxima espero poder encontrar una adecuada.*



### Los comandos mas reconocibles que tenemos en git son:



```jsx
Git init
// Para iniciar entorno git

Git status
// Para saber el status de nuestra version

Git pull
// Para actualizar nuestra rama con nuestra ultima version

Git clone
// Para clonar un repositorio

Git checkout
// Para cambiar de rama a otra

Git push
// Para mandar nuestra version a la rama que queremos
```

## Pasemos a Gitflow

Gitflow es un flujo de trabajo que trabaja con las metodologías ágiles y se compone de diferentes tipos de ramas: la master y la dev que son las mas conocidas por todo el mundo de desarrollo pero a esto le agregamos hotfix y feature. Pasemos a explicar todo:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ryaopk9x18y2mceng91.png)

**Master**
Acá ya es producción, todo lo que pasa acá lo ve el usuario final. Hablándolo en criollo: es la pagina final, fin de la historia

**Dev**
Todo lo que nosotros vemos y probamos antes de mandarnos de lleno a producción. Si primero nos tenemos que mandar un moco, el primer lugar va a ser en desarrollo. Cuando este todo funcional y sin desperfectos, lo mandamos a prod. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/no2frdoykw55qge54mlu.jpg)


**Feature**
Esta rama nos sirve para crear una nueva función o feature a nuestro desarrollo para posteriormente mandar un merge request a nuestra rama dev. En simples palabras, creo algo en una rama llamada feature y lo mando a dev para ver si se rompe todo o si funciona bien.  

**Hotfix**
Esta rama es más que nada para arreglar algo rápido siempre y cuando no sea tan complejo (modificacion de texto, boton, etc). Se crea desde la rama master y se mergea en dev, en caso de estar todo bien, se da el merge a master.

Tal como lo dice la palabra, es un arreglo en caliente. Si entienden el chiste de arreglos en producción, van a saber qué viene de esta palabra. 

## Pasos para crear un entorno con gitflow

Primero tienen que iniciar gitflow y nombran las ramas a su preferencia.

```jsx
git flow init
// para iniciar gitflow a tu repo
```

En el primero van a llamar a la rama master, que en este caso, seria producción. Dependiendo donde sea su repo, posiblemente sea main o master. **En github aparece como main** así que vamos a escribir en esta opción como **main**

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9i7nrs9zznvjhxp9eo7u.png)

En el segundo paso nos va a pedir como se va a llamar la rama de desarrollo así que vamos a nombrarla como dev

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b3pqiozl57zratyuzjv2.png)

Y por ultimo dejamos tal cual como están las siguientes ramas que serian feature, release, hotfix, y demás. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v1fjowpdpychiap55l8r.png)

## Los pasos para crear una nueva rama tanto en hotfix como en feature son los siguientes:

```jsx
git flow feature start "nombre del branch"
// para crear una rama en feature

git flow hotfix start "nombre del branch"
// para crear una rama en hotfix
```

Eso es todo, happy coding✨✨