¿Qué es Git Flow?
A lo largo de nuestra jornada de trabajo necesitaremos ejecutar varias veces al día los comandos git, merge, push y pull así como hacer checkouts de diferentes ramas, borrarlas, etc.
Git Flow son un conjunto de extensiones que nos ahorran bastante trabajo a la hora de ejecutar todos estos comandos, simplificando la gestión de las ramas de nuestro repositorio.
Ramas en Git Flow
Master –> Cualquier commit que pongamos en esta rama debe estar preparado para subir a producción. Cada vez que se incorpora código a master, tenemos una nueva versión.
Develop –> Está el código que conformará la siguiente versión planificada del proyecto.
Feature –> Funcionalidades nuevas de la aplicación.
.- Origen: develop
.- Merge con: develop
.- Nombre: cualquiera que no sea master, develop, hotfix-* o release-*
Release –> Se prepara el siguiente código en producción. En estas ramas se hacen los últimos ajustes y se corrigen los últimos bugs antes de pasar el código a producción incorporándolo a la rama master.
.- Origen: develop
.- Merge con: master y develop
.- Nombre: release-*
Hotfix –> Corregir errores y bugs en el código en producción.
.- Origen: master
.- Merge con: master y develop
.- Nombre: hotfix-*
Support –> ?¿
.- Origen:
.- Merge con:
.- Nombre:
Uso de GIT FLOW
Instalación
sudo apt-get install git-flow
Inicializar un proyecto con Git Flow
mkdir nombreProyecto cd nombreProyecto git init git flow init No branches exist yet. Base branches must be created now. Branch name for production releases: [master] Branch name for "next release" development: [develop] How to name your supporting branch prefixes? Feature branches? [feature/] Release branches? [release/] Hotfix branches? [hotfix/] Support branches? [support/] Version tag prefix? [] v
Al ejecutar git flow init nos pregunta el nombre de las ramas master y develop y demás ramas, dejamos todo por defecto.
Al realizar este comando realiza todas estas acciones por nosotros:
- Crea la rama master
- Crea la rama develop
- Nos pasa a la rama develop
Esto nos creara las ramas master y develop y nos colocara en la rama develop.
Inicializar una feature nueva
git flow feature start <nombreNuevaFeature>
Al realizar este comando realiza todas estas acciones por nosotros:
- Crea una nueva rama a partir de develop
- Nos pasa a la rama creada
Ahora trabajamos en nuestra rama, realizamos nuestros commits….
Terminar feature
git flow feature finish <nombreFeatureAFinalizar>
Al realizar este comando realiza todas estas acciones por nosotros:
- Se mergea la rama feature con develop
- Borra la rama feature
- Nos pasa a la rama develop
Links: