Sobes.tech
Junior

Qual é a sua experiência com Git Flow?

sobes.tech IA

Resposta da IA

Tenho experiência com Git Flow, que utilizo ativamente para gerir ramificações em projetos médios e grandes.

Principais tipos de ramificações:

  • master (ou main) : Código estável, pronto para produção. Atualiza-se apenas por fusão de release.
  • develop : Ramificação principal para integrar novas funcionalidades. Todo o desenvolvimento começa aqui.
  • feature/<nome> : Ramificações para desenvolver novas funcionalidades. Divergem de develop e são fundidas de volta em develop após conclusão.
  • release/<versão> : Ramificações para preparar uma nova versão. Divergem de develop, usadas para correções de bugs e ajustes finais. São fundidas tanto em master como em develop.
  • hotfix/<nome> : Ramificações para corrigir bugs críticos em produção. Divergem de master e são fundidas em master e develop.

Processo típico de trabalho com uma funcionalidade:

# Iniciar o desenvolvimento de uma nova funcionalidade
git flow feature start my-new-feature

# Programar, fazer commits

# Finalizar o desenvolvimento da funcionalidade (fundir em develop e remover a ramificação da funcionalidade)
git flow feature finish my-new-feature

Processo de criação de release:

# Iniciar o processo de release para a versão 1.0.0
git flow release start 1.0.0 develop

# Fazer os ajustes e testes necessários

# Finalizar o release (fundir em `master` e `develop`, etiquetar a versão)
git flow release finish 1.0.0

Git Flow é adequado para projetos com ciclos de lançamento bem definidos e exige disciplina da equipa. Para projetos mais flexíveis e em rápida mudança, modelos de ramificação mais simples, como GitHub Flow, podem ser preferidos.

Utilizei-o em projetos com equipas de 5 a 20 pessoas, o que permitia padronizar o processo de desenvolvimento e reduzir conflitos de fusão.