Git y Control de Versiones

Flujo básico de una feature usando Git Flow (con ejemplos vanilla)

Gitflow puede utilizarse en proyectos que tienen un ciclo de publicación programado, así como para la práctica recomendada de DevOps de entrega continua (CI/CD)

En esta página
Una detallada infografía isométrica en forma de diagrama de flujo, titulada "FLUJO BÁSICO DE UNA FEATURE USANDO GIT FLOW", que ilustra paso a paso el ciclo de vida de una rama de característica en Git Flow.

Flujo básico de una feature usando Git Flow (con ejemplos vanilla)

Gitflow puede utilizarse en proyectos que tienen un ciclo de publicación programado, así como para la práctica recomendada de DevOps de entrega continua

Funcionamiento

Ramas principales y de desarrollo

En lugar de una única rama main, este flujo de trabajo utiliza dos ramas para registrar el historial del proyecto. La rama main o principal almacena el historial de publicación oficial y la rama develop o de desarrollo sirve como rama de integración para las funciones. Asimismo, conviene etiquetar todas las confirmaciones de la rama main con un número de versión.

En el siguiente ejemplo se trabaja en una nueva funcionalidad para listar logs de usuarios

Iniciar Git Flow (si no está inicializado)

shell
# con la extension git flow
git flow init

# sin la extension
git branch develop
git push -u origin develop

git checkout develop

Crear una rama de feature desde develop

shell
# con la extension git flow
git flow feature start logs-de-usuario

# sin la extension
git checkout develop                     # Cambia a la rama develop
git pull origin develop                  # Sincroniza con el remoto
git checkout -b feature/logs-de-usuario  # Crea la rama de feature
  • Esto crea una rama feature/logs-de-usuario basada en develop.

En la mayoría de los escenarios de equipo, especialmente con metodologías como Git Flow o Feature Branch Workflow, la práctica estándar es empujar las ramas de feature al repositorio remoto.

git push -u origin feature/nombre-de-la-feature (¡Aquí la diferencia!) - Subes tu rama de feature al remoto. Puedes hacer esto varias veces mientras trabajas para tener respaldo y permitir la visibilidad.

Ejemplo visual de las ramas

Antes de git flow init:

plaintext
main

Después de git flow init:

plaintext
main
develop

Y luego al crear features:

plaintext
main
develop
  → feature/logs-de-usuario

Trabajar en la feature (ejemplo de comandos durante el desarrollo)

shell
# Hacer cambios en los archivos...
git add src/utils/userLogs.js src/components/UserLogs.astro
git commit -m "Agrega servicio de logs de usuario"
git add tests/userLogs.test.js
git commit -m "Añade tests para los logs de usuario"

Sincronizar con develop (opcional, si hay cambios nuevos en develop)

shell
git checkout develop
git pull origin develop
git checkout feature/logs-de-usuario
git merge develop
# Resuelve conflictos si los hay

Finalizar la feature (merge a develop)

shell
# con la extension git flow
git flow feature finish logs-de-usuario

# sin la extension
git checkout develop                       # Vuelve a develop
git merge --no-ff feature/logs-de-usuario  # Fusiona la feature
git branch -d feature/logs-de-usuario      # Borra la rama local
git push origin develop                    # Sube los cambios
  • Este comando:

Publicar cambios en el repositorio remoto

shell
git push origin develop

Diagrama visual del flujo

plaintext
master

release/* (opcional)

develop ← feature/logs-de-usuario (mergeado)

Representación del flujo final de feature/log_de_usuarios

Diagrama de ejemplo para el flujo básico de una nueva funcionalidad en Git Flow



Comandos adicionales útiles

Si necesitas subir la rama de feature al repositorio remoto (para colaboración):

shell
git flow feature publish logs-de-usuario

# O manualmente:
git push origin feature/logs-de-usuario

Si hay conflictos al finalizar la feature:

shell
# Resuelve conflictos manualmente, luego:
git add .
git commit -m "Resuelve conflictos en logs-de-usuario"
git flow feature finish logs-de-usuario

Para cancelar una feature (en caso de abandonar el desarrollo):

shell
git flow feature delete logs-de-usuario

Notas importantes

  1. Convención de nombres: Las ramas de feature siguen el formato feature/nombre-de-feature (en kebab-case).
  2. Recomendación: Usa git flow feature finish en lugar de hacer merge manual para mantener la consistencia del flujo.
  3. Herramientas gráficas: Si prefieres una interfaz, herramientas como Sourcetree o GitKraken soportan Git Flow. De cualquier forma en el enlace siguiente se encuentran muchos mas clientes con interfaz grafica directamente en el sitio oficial de Git:Git - GUI Clients

Acción

Con git-flow

Con Git puro

Iniciar feature

git flow feature start logs-de-usuario

git checkout -b feature/logs-de-usuario

Publicar feature

git flow feature publish

git push -u origin feature/logs-de-usuario

Finalizar feature

git flow feature finish

git merge --no-ff + git branch -d

SerieEste post forma parte de Git, Merge & Deploy
1
Git + Merge + Deploy, que metodologia seguir para ser un pro DevOps 😎?
Completado
2
🔀 Branching estratégico 🌿
Completado
3
Flujo básico de una feature usando Git Flow (con ejemplos vanilla)
En progreso
4
⤴️Pull Requests (PR) / Merge Requests (MR)
Próximamente
5
Diferencias entre merge directo y usar el proceso de PR/MR
Próximamente
6
Pull Requests y Merge Requests: ¿Git nativo o invención de las plataformas?
Próximamente
33% completado
Jose Tejero

Comentarios

Deja un comentario

Los comentarios se publican tras moderación.

Sé la primera persona en comentar.