# 1) ¿Qué es Git Flow? Es un modelo de ramas que organiza el desarrollo en: • main (o master): producción estable • develop: integración de desarrollo • Ramas de soporte: • feature/*: nuevas funcionalidades • release/*: preparación de versiones • hotfix/*: parches urgentes en producción • (opcional) support/*: mantenimiento de líneas antiguas ---- # 2) Inicialización en un repo existente Dentro del repositorio: ``` Bash git fetch git pull ``` Tras tener el repositorio actualizado ``` git checkout -b develop git flow init ``` Responde al asistente: • Production branch: usa main. • Development branch: develop • Prefijos (recomendado por defecto): • Feature: feature/ • Release: release/ • Hotfix: hotfix/ • Support: support/ ✅ Se debe utilizar la configuracion por defecto ⸻ # 3) Flujo de trabajo habitual ## A. Features (nuevas funcionalidades) ### Crear y cambiar a una feature desde develop Es importante tener tanto la rama `main` como la rama `develop` actualizada ``` git fetch git checkout main git pull --rebase origin main git checkout develop git pull --rebase origin develop ``` Una vez actualizado tanto `main` como `develop` se crea el feature ``` git flow feature start <Codigo de Ticket>-<Nombre descriptivo corto> ``` ### Trabaja, comitea y sube avances ``` git add . git commit -m "feat: agrega X" git push -u origin feature/<Nombre redactado anteriormente> ``` El flujo de trabajo con add, commit y push es un flujo normal ### Crear pullrequest - Ingresar github crear Pull Request - Esperar a tener 2 reviews aprobadas del equipo de developer ### Finalizar (merge a develop y borrar rama) ``` git flow feature finish <Nombre de la rama sin prefijo> ``` ### Push a develop ``` git push origin develop ``` ## B. Release (preparar una versión) ### Rama de estabilización desde develop ``` git flow release start <Version correspondiente> ``` ### Ajusta versionado, CHANGELOG, últimos fixes menores ``` git commit -am "chore(release): prepara <VersionCorrespondiente>" ``` ### Finalizar: merge a main y a develop + tag ``` git flow release finish 1.2.0 ``` ### Sube cambios y tags ``` git push origin main develop --follow-tags ``` ## C. Hotfix (parche urgente en producción) ### Rama desde main para corregir bug crítico ``` git flow hotfix start <Nombre del fix> ``` ### Aplica fix ``` git commit -am "fix: corrige bug crítico" ``` ### Finalizar: merge a main y develop + tag ``` git flow hotfix finish 1.2.1 ``` ### Sube a remoto ``` git push origin main develop --follow-tags ``` ⸻ # 4) Nombres de ramas (convenciones) • feature/nombre-corto-descriptivo • release/1.2.0 • hotfix/1.2.1 Usa kebab-case en features, y semver en releases/hotfixes (MAJOR.MINOR.PATCH). ⸻ # 5) Buenas prácticas • Pull requests: incluso con Git Flow, abre PRs para revisión en `feature/*`, `release/*` y `hotfix/*`. • Versionado: sigue SemVer (1.2.3); Release = MINOR/MAJOR, Hotfix = PATCH. • Tags: prefijo v (1.2.0) para uniformidad. ⸻ # 6) Cheat Sheet (comandos clave) ## Inicializar ``` git flow init ``` ## Features ``` git flow feature start <name> git flow feature publish <name> git flow feature track <name> git flow feature finish <name> ``` ## Releases ``` git flow release start <version> git flow release finish <version> ``` ## Hotfix ``` git flow hotfix start <version> git flow hotfix finish <version> ```