Skip to content
Latchkey

O Que É GitFlow?

GitFlow é um modelo de branching que organiza o trabalho em branches main e develop de vida longa, além de branches de apoio feature, release e hotfix.

GitFlow é uma estratégia de branching bem conhecida que dá a cada tipo de trabalho seu próprio tipo de branch. Ele traz estrutura a projetos com releases agendadas, mas suas muitas branches de vida longa podem tornar a integração mais lenta. Entendê-lo ajuda você a decidir se sua cerimônia se encaixa na sua equipe.

As branches no GitFlow

O GitFlow usa uma branch main permanente que guarda o código lançado e uma branch develop para a integração contínua. As feature branches saem da develop, as release branches estabilizam uma versão antes de ela ir para produção, e as hotfix branches corrigem a produção diretamente a partir da main. Cada tipo tem um propósito e um caminho de merge definidos.

Como o trabalho flui

Uma feature sai da develop e faz merge de volta quando pronta. Quando features suficientes se acumulam, uma release branch é criada para a estabilização final e, então, feita merge tanto na main quanto na develop.

A GitFlow feature branch
git switch develop
git switch -c feature/reports
# build, then merge back into develop

Pontos fortes e tradeoffs

O GitFlow dá um lugar claro para cada atividade, o que serve a produtos versionados com ciclos de release formais. A desvantagem é que as branches develop e feature de vida longa se afastam da main, tornando a integração mais pesada, o oposto do trunk-based development. Muitas equipes agora preferem um modelo mais leve.

GitFlow em CI/CD

Os pipelines espelham a estrutura de branches: a develop pode fazer deploy para staging, as release branches rodam verificação estendida, e a main faz deploy para produção. Os muitos tipos de branch significam mais regras de workflow e mais ambientes para gerenciar, então a configuração do CI cresce junto com a cerimônia de branching.

O GitFlow é certo para você

  • Boa opção para releases agendadas e produtos versionados.
  • Mais pesado que o trunk-based development para web apps de ritmo acelerado.
  • Requer regras de CI por branch e múltiplos ambientes.
  • Fique atento ao drift em branches develop e feature de vida longa.

Principais conclusões

  • O GitFlow define branches feature, release, hotfix, develop e main.
  • Ele serve a releases agendadas, mas adiciona overhead de branches de vida longa.
  • O CI mapeia tipos de branch para ambientes, aumentando a complexidade do pipeline.

Guias relacionados