anúncios

quinta-feira, 13 de novembro de 2025

Workflow de branches em projetos ágeis: Boas práticas com Git Flow

Gerenciar branches de forma organizada é uma das práticas mais importantes em qualquer equipe de desenvolvimento. Um bom fluxo de versionamento garante rastreabilidade, previsibilidade nas entregas e reduz conflitos durante o ciclo de vida de cada Sprint.

Baseado no modelo Git Flow, o workflow que apresento aqui é uma adaptação moderna e prática, utilizada amplamente no mercado em equipes que trabalham com metodologias ágeis e ferramentas como Redmine, Jira, Trello ou GitHub/GitLab Issues.

  1. Estrutura principal do repositório
  2. O repositório segue duas principais linhas de desenvolvimento:

    • master ou main:
    • contém o código estável e homologado, pronto para produção.

    • develop:
    • linha de integração onde as novas funcionalidades e correções de Sprint são validadas antes da liberação.

    A partir dessas duas branches centrais, todo o ciclo de desenvolvimento é organizado.

  3. Criando branches de task (feature)
  4. Cada nova task atribuída no sistema de gestão deve originar uma branch seguindo um padrão de nomenclatura padronizado. Isso facilita a rastreabilidade da entrega, especialmente quando o time é grande ou o projeto possui várias sprints paralelas.

    O padrão recomendado é:

    feature/sprintX/RTCY/TituloDaTask

    Essa branch deve sempre ser criada a partir da branch develop atualizada, garantindo que a task comece sobre a base mais recente do projeto:

    git checkout develop
    git pull origin develop
    git checkout -b feature/sprint5/RTC102/ImplementarAutenticacaoOAuth

    Isso cria a branch da task a partir da develop atualizada.

  5. Commits e Pull Request (PR)
  6. Durante o desenvolvimento da task, os commits devem ser claros e objetivos, refletindo o progresso da implementação e dos testes unitários.

    Ao concluir a task, realize o commit e o push final:

    git add .
    git commit -m "Finaliza implementação e testes unitários da autenticação OAuth"
    git push origin feature/sprint5/RTC102/ImplementarAutenticacaoOAuth

    Em seguida, abra um Pull Request (PR) para a branch develop e utilize o seguinte padrão de comentário:

    [SPRINT5][RTC102][ImplementarAutenticacaoOAuth][feature]

    Isso ajuda o time de revisão e o QA a identificar rapidamente o contexto da entrega.

  7. Correção de bugs encontrados pelo QA
  8. Caso o QA identifique algum bug durante os testes da Sprint, o desenvolvedor deve corrigir o problema na mesma branch da feature, mantendo o histórico da entrega.

    Ao abrir um novo Pull Request ou atualizar o existente, utilize o seguinte padrão de comentário:

    [SPRINT5][RTC102][ImplementarAutenticacaoOAuth][bug] Correção na validação do token

    Esse formato indica que a PR refere-se a uma correção derivada da mesma task principal, mantendo o controle e a rastreabilidade no fluxo da Sprint.

  9. Correções de bugs em produção
  10. Para bugs que ocorrem em produção, a abordagem é diferente.

    Essas correções devem ser baseadas diretamente na branch master ou main, garantindo que a correção seja aplicada sobre o código em execução.

    A nomenclatura segue o padrão:

    feature/bugfix/RTCX

    Por exemplo:

    feature/bugfix/RTC240

    Crie a branch, aplique a correção, teste e envie o Pull Request de volta para a branch principal (master ou main).

    Após aprovação e merge, é possível gerar uma tag de hotfix, caso necessário.

  11. Encerramento da Sprint e versionamento
  12. Ao final de cada Sprint, com todas as tasks revisadas e integradas à develop, é hora de gerar uma tag de versão.

    A tag identifica o encerramento formal da Sprint e serve como ponto de referência no histórico do repositório.

    O padrão sugerido é:

    git tag -a v1.5 -m "Sprint 5 concluída"
    git push origin v1.5

    Esse versionamento facilita auditorias, rollback e acompanhamento de evolução entre as versões.

  13. Benefícios desse workflow
  14. Seguir esse modelo de workflow traz diversas vantagens:

    • Clareza e rastreabilidade das entregas por Sprint.
    • Redução de conflitos de merge.
    • Facilidade na revisão de Pull Requests.
    • Histórico limpo e versionamento controlado.
    • Organização entre desenvolvimento, QA e deploy.

Bugfix Branch: Deve ir apenas para main ou também para develop?

Na maioria dos fluxos Git profissionais, incluindo Git Flow, GitHub Flow e variações híbridas bastante usadas em equipes Java/Spring/Quarkus, existe uma regra importante:

Todo bugfix criado a partir da main deve ser incorporado também à develop, caso ela exista.

Por quê?

Porque a branch develop geralmente contém novas features ainda não liberadas.

Se você corrigir o bug apenas na main, o problema voltará a aparecer quando a develop for integrada no futuro release, causando regressão.

Isso significa:

Criar a branch de bugfix a partir da main atualizada

Porque o bug ocorre na versão em produção.

Porque main representa o código estável.

Abrir Pull Request para main

A hotfix corrige imediatamente a versão produtiva.

Depois da aprovação, fazer merge dessa correção também para develop

Existem duas formas comuns:

PR automático do GitHub (bot cria PR de main -> develop)

Ou o desenvolvedor abre manualmente um PR de sincronização

Isso é opcional?

Não, é considerado convencional e altamente recomendado sempre que o time utiliza uma branch develop.

Ignorar isso pode gerar os seguintes problemas:

Reintrodução do bug ao fazer merge de develop em release futuro.

Divergência de código entre main e develop.

Dificuldade de rastreamento, pois hotfixes não aparecem no histórico da release em desenvolvimento.

Considerações finais

Um bom gerenciamento de branches é mais do que uma convenção, é parte essencial da cultura de engenharia de software madura.

Trabalhar com um workflow bem definido baseado no Git Flow permite que o time mantenha consistência, colabore com eficiência e entregue software de qualidade em ciclos ágeis.

Ao aplicar esse processo com disciplina, cada Sprint se torna mais previsível, e o código entregue ganha estabilidade e confiabilidade, o que é o verdadeiro objetivo de um ciclo de desenvolvimento profissional.

Feito!

Nenhum comentário:

Postar um comentário