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.
git switch develop
git switch -c feature/reports
# build, then merge back into developPontos 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.