Gitflow - doapps/software GitHub Wiki
Gitflow es un flujo de trabajo de basado en git que fue publicado y popularizado por Vincent Driessen. El flujo de trabajo de Gitflow define un modelo de ramificación estricto diseñado en torno a la versión del proyecto. Esto proporciona un marco robusto para la gestión de proyectos grandes.
El proyecto original de Vincent Driessen pueden encontrarlo aquí, sin embargo no viene recibiendo mantenimiento desde el 2011.
Una alternativa igual de buena es el proyecto de Peter van der Does, que pueden encontrarlo aquí que hasta el 2019 vienen recibiendo mejoras y actualizaciones.
Por los siguientes motivos:
- Desarrollo Paralelo
- Colaboración
- Área de puesta en escena de la versión
- Soporte para reparaciones de emergencia
Para instalar gitflow en mac usar el siguiente comando:
- En macOS
brew install git-flow-avh
- En Linux
apt-get install git-flow
- En Windows revisar aquí
Para verificar que ya tienes git-flow instalado puedes verificar la versión instalada con el siguiente comando:
git-flow version
Una vez situado en la carpeta de tu proyecto puedes iniciar usando este comando:
git flow init
A continuación se mostrará un mensaje donde te preguntará cuales serán los nombres de las ramas develop, feature, release, hotfix y support, en nuestro caso le daremos tecla enter consecutivamente para dejar el nombre de las ramas por defecto.
Una vez inicializado git flow te posicionará automáticamente en la rama develop y a partir de aquí ya puedes crear tus features para trabajar.
Un feature puede estar asociado a alguna funcionalidad que definas y que estés dispuesto de desarrollar hasta completarlo en un corto plazo.
Comando para crear un feature:
git flow feature start <name>
Una vez creado el feature ya puedes codificar y generar commits a medida que desarrollas.
Recuerda que todos los commits se encuentra en tu ambiente local.
Cuando finalices el desarrollo de tu feature ya puedes finalizarlo con el siguiente comando:
git flow feature finish <name>
Ojo: Si el feature toma más tiempo y deseas seguir desarrollando desde otra pc o deseas que alguien continue con tu feature tienes la opción de publicar tu feature de forma remota:
Pushear tus cambios al repositorio remoto:
git flow feature publish <name>
Pullear tus cambios desde el repositorio remoto:
git flow feature pull <remote> <name>
Cuando los features que comprenden un entregable están completados ya estamos listo para una versión estable que puede ser desplegada o publicada. Ubícate en la rama develop y crear un release.
Comando para crear un release:
git flow release start <release>
"<"release">" = v1.0.0
Ojo: Si el release necesita revisión o alguna integración previa y se trabajará en remoto puedes usar el comando
git flow release publish <release>
Si estas listo para publicar el realease:
git flow release finish <release>
Este comando hace un merge de la rama develop en master y vuelve a develop ya actualizado y elimina la rama release creada de forma temporal.
Para finalizar la publicación:
git push origin --all --follow-tags
Este comando actualizará las ramas master y develop en el repositorio remoto y además creará el tag v1.0.0 en el repositorio remoto.
Si deseas más detalles del uso de Gitflow puedes revisar este video.
Si tienes problemas con vim o ves un mensaje similar a este:
git-flow hotfix finish list-description-update error: There was a problem with the editor 'vi'. Please supply the message using either -m or -F option. Fatal: Tagging failed. Please run finish again to retry.
Puedes revisar aquí: https://github.com/petervanderdoes/gitflow-avh/issues/293
- https://nvie.com/posts/a-successful-git-branching-model/
- https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
- https://datasift.github.io/gitflow/IntroducingGitFlow.html
- https://github.com/doapps/software/wiki/Buenas-pr%C3%A1cticas-al-realizar-commits
- https://danielkummer.github.io/git-flow-cheatsheet/
- https://www.youtube.com/watch?v=BYrt6luynCI