| name | branching-strategy |
| description | Estratégia de branches: trunk-based vs GitFlow, nomenclatura, proteção de branch, PRs. Keywords: branch, git flow, trunk based, feature branch, nomenclatura de branch, git |
Branching Strategy
Objetivo: Manter historico de git limpo, colaboracao sem conflitos longos e deploys frequentes e seguros.
TRUNK-BASED DEVELOPMENT (recomendado)
Principio: todos trabalham em branches curtas (< 2 dias) a partir de main. Nenhum branch vive por semanas.
main
├── feat/auth-oauth (1-2 dias → merge → delete)
├── fix/token-expiry (horas → merge → delete)
└── refactor/user-service (1 dia → merge → delete)
Vantagens:
- Integracoes continuas e pequenas → menos conflitos
- Deploy frequente sem acumulo de mudancas
- Feature flags substituem branches longos
Quando usar: equipes com CI/CD maduro, projetos com deploys frequentes.
GITFLOW (para releases versionadas)
Para projetos com releases discretas (bibliotecas, apps mobile, APIs com versoes).
main → codigo em producao
develop → integracao continua
feat/* → novas funcionalidades (a partir de develop)
fix/* → bug fixes (a partir de develop)
hotfix/* → correcoes urgentes em producao (a partir de main)
release/* → preparacao de release (a partir de develop)
Quando usar: apps mobile, bibliotecas publicas com semver, projetos com release cycle definido.
NOMENCLATURA DE BRANCHES
Formato: tipo/descricao-curta-em-kebab-case
feat/auth-oauth-google
fix/token-expiry-timezone
docs/update-readme-instalacao
refactor/extrair-calculo-pontuacao
test/adicionar-cenarios-auth
chore/atualizar-dependencias
hotfix/sql-injection-login
release/v1.2.0
Regras:
PROTECAO DO BRANCH MAIN
Configurar no GitHub/GitLab (Settings > Branches):
MERGE STRATEGY
Squash and merge (recomendado para trunk-based):
Todos os commits do branch viram um unico commit em main.
Historico de main: limpo, um commit por feature/fix.
Quando: branches curtos com varios commits de WIP.
Merge commit (recomendado para gitflow):
Preserva todos os commits do branch.
Historico completo e rastreavel.
Quando: branches de feature ou release com commits bem escritos.
Rebase and merge:
Commits do branch aplicados linearmente em main.
Sem merge commit, mas reescreve historia.
Quando: branches com poucos commits bem estruturados.
Nao misturar strategies no mesmo projeto — definir e documentar no CONTRIBUTING.md.
RESOLUCAO DE CONFLITOS
BRANCH LIFECYCLE
Criar → Trabalhar → Abrir PR → Review → Merge → Deletar
CHECKLIST DE BRANCH