Este documento detalha o fluxo de trabalho padrão da indústria para gerenciar hotfixes — correções de emergência para bugs críticos em produção. Seguir este processo garante velocidade, segurança e, acima de tudo, a integridade do código base.
Um hotfix é uma correção urgente aplicada a um ambiente de produção para resolver um bug crítico. O objetivo é restaurar a funcionalidade com o mínimo de risco e o mais rápido possível, sem introduzir novas funcionalidades que ainda estão em desenvolvimento.
Este é o passo mais fundamental. A branch de hotfix SEMPRE deve ser criada a partir da main (ou master), pois ela representa o estado exato do que está em produção.
-
Sincronizar a
mainlocal:git checkout main git pull origin main
-
Criar a branch de hotfix: A nomenclatura é crucial para a rastreabilidade.
# Padrão: hotfix/TICKET-ID-descricao-curta git checkout -b hotfix/PROD-452-corrige-falha-login
Por que da main? Porque a branch develop contém funcionalidades novas e instáveis que não podem ir para produção em uma correção de emergência. O hotfix precisa ser uma alteração cirúrgica no código que já está no ar.
- Implementação: O desenvolvedor implementa a correção focada exclusivamente no bug.
- Regra de Ouro: Nada de refatoração ou melhorias de código adjacente. O objetivo é reduzir o risco de introduzir novos problemas.
- Commit: O commit deve seguir o padrão de Conventional Commits para acionar o versionamento automático.
# O tipo "fix" vai gerar um PATCH release (ex: 1.2.2 -> 1.2.3) git commit -m "fix(auth): corrige erro de login para usuários com caracteres especiais"
- Push e PR: A branch de hotfix é enviada para o repositório e uma Pull Request é aberta para a
main. - CI/CD e Code Review Prioritário: A PR dispara testes rigorosos e entra na fila de revisão com prioridade máxima.
- Merge: Após a aprovação e com o CI verde, a PR é mergida na
main. - Workflow de Produção: O merge na
maindispara o workflow de produção. - Versioning Automático: Ferramentas como o
semantic-releasefazem o bump da versão (ex:v1.2.2->v1.2.3), criam a tag no Git e atualizam oCHANGELOG.md. - Deploy: O workflow faz o deploy da nova versão para produção.
Este é o passo que garante a consistência do projeto. A correção precisa ser incorporada na develop para que o bug não seja reintroduzido no próximo ciclo de release.
A ordem é estritamente esta:
- Checkout na
develope sincronização:git checkout develop git pull origin develop
- Merge da
mainnadevelop:git merge main
Por que esta ordem é inegociável?
- Fonte da Verdade: Você está trazendo para a
developo código que foi validado, aprovado, mergido e deployado, não uma "tentativa de correção". - Commit de Release: O merge traz também o commit de versionamento (ex:
chore(release): 1.2.3), mantendo o histórico de versões alinhado entremainedevelop. - Prevenção de Divergência: Evita o cenário perigoso onde a
developcontém uma correção que, por algum motivo, foi revertida ou falhou no deploy em produção.
Após o merge bem-sucedido em main e develop, a branch de hotfix pode ser removida.
git push origin --delete hotfix/PROD-452-corrige-falha-loginEste fluxo é uma implementação do padrão Gitflow, adaptado para ambientes de CI/CD modernos.
- A Successful Git Branching Model (O Post Original do Gitflow) - Vincent Driessen: https://nvie.com/posts/a-successful-git-branching-model/
- Gitflow Workflow - Atlassian Git Tutorial: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
- Understanding the GitHub Flow: https://guides.github.com/introduction/flow/ (Nota: O GitHub Flow é mais simples e não tem o conceito de
develop, mas os princípios de branches de curta duração são relevantes).