NOTAS WEB
Git Flow: crea un flujo de trabajo
Git Flow es una metodología de flujo de trabajo que utiliza Git, el sistema de control de versiones distribuido, para gestionar eficazmente el desarrollo de proyectos de software. La idea principal detrás de este flujo es proporcionar un marco de trabajo estructurado que facilite la colaboración entre desarrolladores y la gestión de versiones de software, particularmente en proyectos grandes o complejos.
Componentes clave de Git Flow
Git Flow se basa en el uso de ramas para separar diferentes etapas de desarrollo y facilitar el lanzamiento de nuevas características, arreglos y actualizaciones:
- Rama
master
: Esta rama almacena el código oficial del proyecto y se actualiza solo al final de un ciclo de lanzamiento, cuando se está seguro de que el código es estable. - Rama
develop
: Sirve como una rama de integración para características nuevas. Aquí es donde se unen todas las características desarrolladas antes de que estén listas para ser lanzadas en la ramamaster
. - Ramas
feature
: Se crean desdedevelop
y se utilizan para desarrollar nuevas características. Una vez completadas, se reintegran (merge) adevelop
. - Ramas
release
: Estas ramas se bifurcan dedevelop
para preparar un nuevo lanzamiento de producción. Permiten la corrección de errores y la preparación de metadatos de lanzamiento. Una vez listas, se fusionan conmaster
y condevelop
. - Ramas
hotfix
: Se crean desdemaster
para realizar correcciones urgentes en la producción. Después de completar el arreglo, estas ramas se fusionan tanto enmaster
como endevelop
.
Diferencias entre Git Flow y el uso normal de Git
La principal diferencia entre usar este flujo y un enfoque más «normal» o básico de Git radica en la estructura y las reglas predefinidas que Git Flow impone para gestionar las ramas y el flujo de trabajo:
- Estructura de ramas: Git Flow define una estructura de ramas específica y el propósito de cada rama, lo que puede ayudar a mantener el proyecto organizado y predecible.
- Flujo de trabajo: Git Flow especifica claramente cómo y cuándo deben crearse, utilizarse y fusionarse las ramas. Esto contrasta con un uso más flexible de Git, donde los equipos pueden decidir cómo quieren utilizar las ramas basándose en sus necesidades específicas.
- Gestión de lanzamientos: Git Flow facilita la gestión de lanzamientos al separar claramente las fases de desarrollo, preparación y mantenimiento.
Configuración Inicial de Git Flow
Instalación
Git Flow se puede instalar utilizando un gestor de paquetes adecuado para tu sistema operativo. Te dejo el enlace a su página para obtener más información sobre su instalación
Inicialización en tu Proyecto:
- Ejecuta
git flow init
en el directorio de tu proyecto. - Configura
main
como la rama para releases de producción. - Configura
develop
como la rama para el desarrollo de «next release».
Ajuste de Configuración
Si te equivocaste al configurar las ramas durante la inicialización:
- Modificar Configuración de Ramas:
- Cambia la rama de producción a
main
congit config gitflow.branch.master main
. - Asegura que
develop
esté configurada como la rama de desarrollo congit config gitflow.branch.develop develop
.
- Cambia la rama de producción a
- Verifica la Configuración Actual:
- Revisa las configuraciones de Git Flow con
git config --get-regexp gitflow
.
- Revisa las configuraciones de Git Flow con
Adaptación del Flujo de Trabajo
Con Git Flow, el proceso para trabajar en nuevas características se estructura para facilitar el seguimiento y la integración de nuevas funcionalidades. Aquí está cómo se vería:
- Inicio de una Nueva Característica:
git flow feature start newFeature
Esto crea y cambia a una rama llamadafeature/newFeature
basada endevelop
. - Hacer Cambios y Comprometerlos: Aquí trabajas en tu característica y realizas commits como lo harías normalmente.
git add . && git commit -m "Describe los cambios realizados"
- Finalizar la Característica: Una vez que has terminado con el desarrollo de la característica y estás listo para integrarla en
develop
, utilizas:git flow feature finish newFeature
Este comando cambia automáticamente adevelop
, fusionafeature/newFeature
endevelop
, y luego elimina la ramafeature/newFeature
. - Subir Cambios a
Develop
: Después de finalizar la característica y haber vuelto adevelop
, debes subir los cambios al repositorio remoto:git push origin develop
Ventajas de Usar Git Flow para Características
- Organización Mejorada: Cada tipo de trabajo tiene su propia rama específica (features, releases, hotfixes), lo que hace más claro y organizado el flujo de trabajo.
- Automatización de Tareas Rutinarias: Git Flow automatiza algunas de las tareas de cambio de ramas y fusión, reduciendo el riesgo de errores.
- Consistencia en el Equipo: Facilita que todos en el equipo sigan las mismas prácticas.
Con este flujo, puedes gestionar tus características de manera más estructurada y alineada con un flujo de trabajo estándar que muchos equipos de desarrollo encuentran útil para mantener la coherencia y la claridad en proyectos complejos. También la reducción de comandos y la disminución de tiempo para añadir cambios.
Uso para Releases
- Inicio de una Nueva Release:
- Comienza una nueva release con
git flow release start [version]
, por ejemplo,git flow release start 1.0.0
.
- Comienza una nueva release con
- Finalización de Desarrollo y Pruebas en la Rama de Release:
- Realiza ajustes finales, prueba la aplicación, actualiza documentación y números de versión.
- Finalizar la Release:
- Completa la release con
git flow release finish '1.0.0'
, que fusionará la rama de release enmain
ydevelop
, etiquetará la versión enmain
y eliminará la rama de release.
- Completa la release con
- Empujar los Cambios al Repositorio Remoto:
- Empuja los cambios a las ramas
main
ydevelop
y las etiquetas congit push origin main
,git push origin develop
ygit push --tags
.
- Empuja los cambios a las ramas
Consejos Adicionales
- Reinicialización de Configuración: Puedes reinicializar Git Flow si necesitas ajustar más configuraciones.
- Comunicación y Documentación: Mantén informado a tu equipo sobre los cambios y actualiza la documentación del proyecto según sea necesario.
Si quieres profundizar en el uso de Git y Git Flow, y aprender a resolver problemas reales en proyectos del día a día, este artículo sobre cómo gestionar hotfixes en entornos de producción te va a interesar. 🚀 No dudes en dejar un comentario si te gustaría saber más sobre otros casos de uso de Git. ¡Estoy atento a tus preguntas! 😎
Otros post relacionados con Git
Crear GitHooks para automatizar tus subidas.
Desarrollador de software con más de 7 años de experiencia, especializado en desarrollo web y backend. Con habilidades demostradas en PHP, Laravel, Symfony, y una amplia gama de tecnologías modernas. Apasionado por el diseño y desarrollo de software.