Você já passou pela frustração de ter uma funcionalidade incompleta indo para produção, ou de ter que fazer um hotfix urgente e acabar quebrando o que a equipe ainda estava desenvolvendo? Em um ambiente de desenvolvimento profissional, a forma como organizamos nosso histórico de código é tão importante quanto o código que escrevemos. É aqui que entra o GitFlow. Mais do que uma simples lista de comandos, o GitFlow é uma metodologia estruturada que nos permite separar o que é desenvolvimento, o que está em teste e o que é o ‘puro sangue’ da nossa aplicação em produção. Neste artigo, vamos explorar como implementar esse fluxo passo a passo para trazer previsibilidade e segurança às entregas da sua equipe.
No GitFlow (Tradicional), o foco é a organização e a separação clara de responsabilidades entre ambientes. Ele é ideal para equipes que precisam de um controle rígido sobre o que é liberado e quando.
Diferente do Trunk-Based, aqui o Git é a ferramenta de controle de liberação. O segredo do GitFlow é que cada branch de longa duração tem uma função específica.
A Hierarquia do GitFlow Link para o cabeçalho
Para este cenário, você terá sempre duas branches “imortais”:
-
main(oumaster): Reflete exatamente o que está em produção. Nunca se faz commit aqui, apenas merges dereleaseouhotfix. -
develop: Onde o código integrado vive. É a base para as novas funcionalidades.
O Fluxo Passo a Passo (Esteira de Produção) Link para o cabeçalho
1. Início de uma nova Feature Link para o cabeçalho
Você cria uma branch a partir da develop:
git checkout -b feature/novo-checkout develop
-
Você faz seu trabalho aqui. Quando termina, abre um Pull Request para a
develop. -
Após aprovado, o código entra na
develop.
2. Preparação para o Release (Staging) Link para o cabeçalho
Quando a develop já tem tudo o que você quer colocar na próxima atualização (ex: versões 1.1.0), você cria uma branch de release:
git checkout -b release/v1.1.0
-
Este é o seu momento de Staging: O seu pipeline de CI/CD deve ser configurado para ler esta branch
release/v1.1.0e fazer o deploy automático no seu ambiente de Staging. -
Ajustes finais: Se encontrar um bug, você corrige na própria branch de release.
3. O “Deploy” de fato (Produção) Link para o cabeçalho
Quando o teste no Staging está aprovado, você move a versão para a main:
-
Faz o merge da
releasenamain. -
Cria uma Tag na
main(ex:v1.1.0) para marcar aquele momento histórico. -
Sincronização: Faz o merge da
release(ou damain) de volta para adevelop, para garantir que qualquer correção feita na fase de testes do release não se perca.
4. O que fazer em caso de Bug em Produção? (Hotfix) Link para o cabeçalho
Se algo quebrou em produção e você não pode esperar o ciclo da develop:
-
Crie uma branch de
hotfixa partir damain:git checkout -b hotfix/bug-urgente. -
Corrija o bug.
-
Faça o merge da
hotfixna main`` (e crie a tag de correção, ex:v1.1.1). -
Crucial: Faça o merge da
hotfixnadeveloptambém, para que o erro não volte a aparecer no próximo release.
Resumo da Esteira para Equipe Pequena Link para o cabeçalho
| Ação | Branch de Origem | Branch de Destino | Ambiente que dispara |
|---|---|---|---|
| Desenvolver feature | develop |
feature/* |
Local |
| Integrar na equipe | feature/* |
develop |
Local/Dev |
| Testar Release | develop |
release/* |
Staging |
| Colocar no ar | release/* |
main |
Produção |
Por que usar o GitFlow se é mais trabalhoso? Link para o cabeçalho
-
Isolamento total: Você pode ter uma versão 1.0 rodando em produção enquanto prepara a 1.1 no
release, e a equipe continua trabalhando na 1.2 nadevelop. -
Histórico limpo: A
mainsó tem o histórico de “versões oficiais”. É muito fácil voltar atrás (rollback) se algo der errado, pois basta apontar amainpara uma tag anterior. -
Segurança: Se o seu cliente exige aprovação humana antes de qualquer atualização, o GitFlow facilita isso: o merge na
mainsó ocorre após o “ok” norelease.
Dica de Ouro para o GitFlow Link para o cabeçalho
Não tente fazer cherry-pick entre main, develop e release constantemente. Siga o fluxo de merges. Se você seguir a regra de sempre mesclar a hotfix ou release **de volta para a develop, você nunca terá problemas de código perdido.