Branching para times que precisam fechar pacote com precisão

Release por pacote exige trilha clara.

Use xtreme-git-flow quando o time precisa explicar com precisão o que entrou na release, o que ainda está em validação de QA, qual hotfix retornou para as linhas ativas e por que develop e qa divergem. O modelo acrescenta processo; em troca, transforma release em evidência operacional.

  • release por pacote
  • aceite em QA
  • feature como fonte de verdade
  • merge-back formal
  • delta entre develop e qa
1fonte funcional por feature

Correções pedidas em QA voltam para a feature, então a versão aceita não se fragmenta entre branches de promoção.

3leituras do delta no fechamento

Commits, arquivos e sentido funcional são checados antes que a divergência entre develop e qa vire surpresa operacional.

2rotas de promoção sem mudança funcional

release-dev e release-qa transportam código entre ambientes; não deveriam concentrar decisões de produto.

100%hotfixes propagados

Uma correção crítica só termina quando retorna às linhas ativas que poderiam reintroduzir o defeito.

O modelo separa decisões que muitos times tratam como uma só.

Implementar, expor em desenvolvimento, homologar em QA, entrar oficialmente na release e equalizar os ambientes depois do aceite são decisões diferentes. O xtreme-git-flow dá a cada uma um caminho de branch, um ponto de revisão e um resultado verificável.

O pacote deixa de ser reconstituído por memória

Só trabalho aceito em QA entra na release, então o pacote da sprint pode ser explicado sem vasculhar branches dispersas.

QA pode reprovar sem contaminar o pacote

A branch qa valida a candidata antes de o PR congelado entrar na release. Reprovou? A correção volta para a feature.

A feature preserva a história funcional

Branches de promoção podem resolver integração. Elas não devem virar canal paralelo para comportamento de produto.

Promoção vira evento revisável

release-dev e release-qa tornam a movimentação entre ambientes explícita, em vez de depender de merges diretos sob pressão.

Divergência vira artefato reportável

O delta entre develop e qa é calculado, classificado e tratado, em vez de virar especulação.

Linhas long-lived ganham rotina de limpeza

develop e qa são refrescadas periodicamente a partir da base estável para que resíduo antigo não vire normal.

O ganho não está em multiplicar nomes de branch. Está em disciplinar promoção, homologação, entrada em release, merge-back e leitura recorrente do delta entre develop e qa.

Artefatos

O que a liderança leva para a conversa de release.

A adoção só se sustenta quando deixa rastros úteis. Estes são os quatro artefatos que o fluxo deve produzir ao final de uma sprint real.

Manifesto do pacote

Lista objetiva das features aceitas, PRs congelados e motivo de entrada na release.

release/2026.05-sprint-10: #2001, #2004, #2006

Recibo de aceite em QA

Registro de que a feature passou por QA antes de entrar oficialmente no pacote.

feature/2005 -> release-qa/2005 -> qa -> release

Recibo de merge-back

Evidência de que a versão aceita voltou para develop e qa depois da release.

merge-back/release/sprint-10 -> develop + qa

Relatório do delta

Classificação final do que difere entre develop e qa, com responsáveis e tratamento.

2 commits exclusivos, 5 arquivos, 1 hotfix parcial

Escolha pelo problema de release, não pela moda do fluxo.

GitHub Flow e trunk-based development favorecem integração e deploy frequentes. Git Flow formaliza linhas de release. xtreme-git-flow entra quando o desafio é provar composição, homologação e retorno de um pacote entre ambientes.

GitHub Flow

Melhor quando um PR aprovado já pode ficar perto de produção.

GitHub Flow funciona bem quando main é confiável, rollback é barato e o time não precisa fechar um pacote formal antes de publicar.

  • Custo operacional baixo: um PR, revisão curta e merge rápido.
  • Exige automação forte e apetite real por deploy frequente.
  • Se o pacote precisa de aceite formal, esse controle costuma nascer fora do Git.

Combina melhor com produto de deploy frequente e pouca homologação manual.

Git Flow

Útil quando release branch importa, mas QA ainda cabe no mesmo ciclo.

Git Flow cria estrutura para release e hotfix, mas não resolve sozinho a pergunta sobre aceite em QA antes da entrada no pacote.

  • Funciona bem para janelas de release e manutenção de versões em paralelo.
  • Não define, por si só, uma promoção auditável para um ambiente de QA separado.
  • Também não obriga leitura recorrente do delta entre develop e qa.

Atende melhor quando QA participa do ciclo, mas não opera como linha com aceite próprio.

Trunk-based

Faz sentido quando trabalho incompleto pode ficar protegido por flags.

Trunk-based development funciona quando integração contínua é rotina, CI bloqueia regressões cedo e feature flags separam exposição de publicação.

  • Reduz conflito porque branches vivem pouco e entram no trunk cedo.
  • Exige engenharia madura: testes rápidos, flags, observabilidade e rollback treinado.
  • Bate de frente com aceite sequencial por pacote quando QA manual ainda é obrigatório.

Não é atalho para contexto que ainda depende de checklist manual por pacote.

Leitura prática: se a prioridade é integrar cedo e publicar com frequência, um fluxo mais leve costuma bastar. Se a necessidade é fechar pacote, validar em QA e administrar o delta entre ambientes, o xtreme-git-flow entrega mais controle.

Use quando a ambiguidade de release já custa tempo e retrabalho.

O modelo se paga quando o time precisa explicar repetidamente o que está no pacote, o que QA aprovou, qual hotfix já foi propagado e por que duas linhas long-lived discordam.

Releases por pacote com aceite funcional

Quando produto, suporte ou negócio perguntam exatamente o que entra em produção, release precisa ser mais do que nome de branch.

QA com ambiente e fila próprios

O modelo encaixa quando QA precisa de uma linha controlada, não apenas do que develop contém por acaso.

Dependências entre times mudam o escopo

Quando uma feature depende de outra, a release precisa refletir o estado aceito, não apenas o estado mais novo.

Times auditáveis precisam do caminho, não só do resultado

Registros de promoção, hotfix e delta ajudam a explicar como o código se moveu, não apenas onde ele terminou.

Hotfix não pode contornar o restante do fluxo

A correção pode sair de main e chegar rápido em produção, mas a política força retorno para as linhas ativas antes do esquecimento.

Divergência entre ambientes surpreende o time

Se develop e qa divergem com frequência, o relatório de delta vira instrumento de gestão, não pós-escrito técnico.

Oito transições, cada uma com dono e finalidade explícitos.

O fluxo alinha ambientes com produção, move a feature por exposição em desenvolvimento, validação em QA, entrada oficial na release, merge-back, propagação de hotfix e fechamento do delta.

01

Alinhe os ambientes com produção

As branches develop e qa recebem merge de main no início da sprint. A release vigente nasce dessa base.

02

Crie a feature a partir da release vigente

A implementação nasce em feature/<id>-<descricao>, com PR congelado para a release como registro oficial da candidatura.

03

Promova para desenvolvimento por branch intermediária

A branch release-dev sincroniza com develop, recebe revisão técnica e leva a feature ao ambiente de desenvolvimento.

04

Promova para homologação em branch própria

A branch release-qa sincroniza com qa e disponibiliza a feature para validação funcional controlada.

05

Corrija em feature, nunca direto na branch de promoção

Se QA rejeitar, a correção volta obrigatoriamente para a feature, mantendo uma única trilha legítima de implementação.

06

Aceite funcional destrava a entrada oficial na release

Somente após homologação o PR congelado é aprovado, e a feature passa a compor o pacote oficial da sprint.

07

Merge-back equaliza os ambientes com a versão aceita

Branches de merge-back devolvem para develop e qa a versão oficial consolidada na release.

08

Hotfix nasce da main; delta fecha a governança da sprint

Correção crítica sai de main, volta para as linhas ativas e a sprint encerra com apuração do delta e plano de tratamento.

Cada branch tem uma função; nenhuma deve virar atalho.

Branches permanentes representam estados do produto. Branches transitórias carregam feature, promoção, merge-back ou correção emergencial. Essa separação evita que ajustes funcionais escapem para a branch mais conveniente.

main

permanente

Referência de estabilidade produtiva

Todo deploy produtivo parte daqui. Hotfix também nasce aqui.

develop

permanente

Linha de integração técnica

Consolida entregas em andamento no ambiente de desenvolvimento.

qa

permanente

Linha de homologação

Disponibiliza código controlado para validação funcional antes da composição oficial da release.

release/<sprint>

pacote oficial

Pacote oficial da sprint

Recebe apenas features homologadas e aprovadas para a sprint.

feature/<id>

trabalho

Fonte de verdade funcional

Toda implementação e toda correção de QA devem voltar para cá.

release-dev/<id>

promoção

Entrada controlada em develop

Resolve integração técnica sem contaminar a história funcional da feature.

release-qa/<id>

promoção

Entrada controlada em qa

Leva a feature para homologação sem transformar qa em branch de desenvolvimento.

merge-back/release/*

equalização

Retorno da versão oficial

Propaga a feature aceita na release de volta para develop e qa.

hotfix/<id>

emergencial

Correção crítica em produção

Sai de main, entra em produção e precisa ser propagada para todas as linhas ativas.

Dois diagramas para ler política e execução.

O primeiro diagrama mostra a política completa. O segundo mostra uma sprint com trabalho paralelo, conflito resolvido em branches de promoção, validação em QA e fechamento gradual do pacote.

Quatro rotinas evitam que o modelo vire cerimônia vazia.

A adoção funciona quando o time trata cada branch como contrato. Estas rotinas criam a disciplina mínima para manter o fluxo previsível ao longo das sprints.

Abra a sprint a partir de uma base produtiva conhecida

develop, qa e release partem de main para que o time não comece a sprint herdando drift inexplicado.

Congele o PR para release antes do aceite em QA

O PR registra a candidatura, mas a aprovação espera aceite funcional. O pacote é composto por aceite, não por expectativa.

Promova por ambiente com branch revisável

release-dev e release-qa tornam cada movimento explícito e mantêm trabalho de integração fora da história da feature.

Feche com relatório de delta acionável

A sprint termina com divergência classificada: esperada, pendente, hotfix parcial, resíduo histórico ou estado incorreto.

Abertura da sprint

git checkout qa
git pull
git merge main
git push

git checkout develop
git pull
git merge main
git push

git checkout main
git pull
git checkout -b release/2026.05-sprint-10

Fechamento da sprint com leitura do delta

git log --oneline develop ^qa
git log --oneline qa ^develop

git diff --name-status develop..qa
git diff --name-status qa..develop

git rev-list --left-right --count develop...qa

Uma sprint completa, com TL e 2 DEVs, rodando em clones Git reais.

Esta seção incorpora o cenário documentado em ExemploReal.md: um origin bare local, três clones independentes, dois CRUDs e fechamento da sprint em main com tag. O objetivo é mostrar instalação, configuração e execução do xgf em um fluxo auditável.

3 clones reais2 CRUDs paralelos1 release fechadatag v2026.05.25-demo

Instalar o CLI publicado no npm

CLI

O pacote oficial xtreme-git-flow-cli publica o comando xgf no ambiente global. Se preferir, também é possível executar sem instalação global com npx.

npm install -g xtreme-git-flow-cli
xgf --help

# alternativa sem instalação global
npx xtreme-git-flow-cli --help
ComandoNPM
npm install -g xtreme-git-flow-cli

O que faz: instala globalmente o pacote oficial publicado no npm.

O que produz: o comando xgf disponível no terminal para qualquer repositório.

ComandoXGF
xgf --help

O que faz: valida se o binário foi exposto corretamente e lista os comandos disponíveis.

O que produz: uma referência rápida com comandos, aliases e opções suportadas.

ComandoShell
npx xtreme-git-flow-cli --help

O que faz: executa o pacote diretamente do npm sem instalação global prévia.

O que produz: acesso ad-hoc ao CLI para testes rápidos ou ambientes efêmeros.

Configurar as branches do repositório

Repo

Cada clone precisa registrar main, develop e qa em .git/xgf.config.json. Em uso manual, o caminho mais simples é rodar xgf config.

xgf config
xgf cfg --show

# arquivo salvo em .git/xgf.config.json
{
  "branches": {
    "main": "main",
    "develop": "develop",
    "qa": "qa"
  },
  "output": {
    "mode": "compact"
  }
}
ComandoXGF
xgf config

O que faz: abre o fluxo de configuração do repositório atual.

O que produz: o arquivo .git/xgf.config.json com nomes de main, develop, qa e modo de output.

Atalho / equivalente: Alias curto disponível: xgf cfg

ComandoXGF
xgf cfg --show

O que faz: lê a configuração persistida e exibe os valores ativos para aquele clone.

O que produz: uma conferência rápida das branches estruturais antes de iniciar a sprint.

Atalho / equivalente: Equivale a xgf config --show

Ana Souza

TL

Team Lead e dona da release

Abre a sprint, alinha develop e qa com main, revisa as promoções, aprova features na release, executa merge-back e fecha a sprint com tag.

Opera sobre main, develop, qa e release/*.

Bruno Lima

DEV 1

Responsável pelo CRUD de clientes

Cria a feature 1001, adiciona src/resources/clientes.json, cobre o recurso com teste dedicado e promove a entrega para develop e qa.

Feature usada: feature/1001-clientes-crud.

Carla Mendes

DEV 2

Responsável pelo CRUD de produtos

Cria a feature 1002, adiciona src/resources/produtos.json, valida a entrega com teste próprio e repete o fluxo de promoção antes do aceite final.

Feature usada: feature/1002-produtos-crud.

1. Ana abre a sprint e cria a release

TL

O primeiro passo prepara qa, develop e release/2026.05-sprint-10 a partir de main.

git clone <origin> ana-tl
cd ana-tl
xgf cfg --show
xgf ss 2026.05-sprint-10
ComandoGit
git clone <origin> ana-tl

O que faz: cria o clone da Team Lead a partir do remoto central.

O que produz: um diretório isolado onde Ana faz reviews, merges e fechamento da release.

ComandoShell
cd ana-tl

O que faz: entra no clone da TL para operar naquele repositório local.

O que produz: o contexto correto para rodar xgf naquele clone.

ComandoXGF
xgf cfg --show

O que faz: confere as branches estruturais registradas para aquele clone.

O que produz: uma validação rápida da configuração antes da abertura da sprint.

Atalho / equivalente: Equivale a xgf config --show

ComandoXGF
xgf ss 2026.05-sprint-10

O que faz: abre a sprint e prepara as linhas compartilhadas a partir de main.

O que produz: qa e develop alinhadas, mais a branch release/2026.05-sprint-10 pronta para receber features aprovadas.

Atalho / equivalente: Equivale a xgf sprint start -s 2026.05-sprint-10

2. Bruno implementa o CRUD de clientes

DEV 1

A feature nasce da release limpa, gera checkpoint local e, se ainda houver pendências no push, permite escolher em árvore o recorte final antes de subir para origin e abrir as branches de promoção.

xgf fs 1001/clientes-crud 2026.05-sprint-10
npm test
xgf ck
xgf fp
xgf fd 1001/clientes-crud
xgf fq 1001/clientes-crud
ComandoXGF
xgf fs 1001/clientes-crud 2026.05-sprint-10

O que faz: cria a feature de clientes a partir da release vigente.

O que produz: a branch feature/1001-clientes-crud já enviada para origin e pronta para desenvolvimento.

Atalho / equivalente: Equivale a xgf feature start -i 1001 -d clientes-crud -s 2026.05-sprint-10

ComandoNPM
npm test

O que faz: roda os testes do exemplo antes da promoção.

O que produz: evidência local de que o CRUD e o loader continuam consistentes.

ComandoXGF
xgf ck

O que faz: gera um checkpoint automático com git add -A e commit padronizado.

O que produz: um commit local com mensagem derivada da branch e do volume de arquivos alterados.

Atalho / equivalente: Equivale a xgf checkpoint

ComandoXGF
xgf fp

O que faz: se houver alterações pendentes, abre uma TUI em árvore para selecionar arquivos, pastas ou tudo; depois envia a feature atual para origin.

O que produz: um commit único com o recorte escolhido quando necessário e origin/feature/1001-clientes-crud atualizado, evitando que a TL aprove uma cópia antiga.

Atalho / equivalente: Equivale a xgf feature push

ComandoXGF
xgf fd 1001/clientes-crud

O que faz: cria a branch de promoção para o ambiente de desenvolvimento.

O que produz: release-dev/1001-clientes-crud pronta para PR em develop.

Atalho / equivalente: Equivale a xgf feature promote-dev -i 1001 -d clientes-crud

ComandoXGF
xgf fq 1001/clientes-crud

O que faz: cria a branch de promoção para homologação.

O que produz: release-qa/1001-clientes-crud pronta para PR em qa.

Atalho / equivalente: Equivale a xgf feature promote-qa -i 1001 -d clientes-crud

3. Carla implementa o CRUD de produtos

DEV 2

O segundo CRUD repete o mesmo pipeline em paralelo e, no push, também pode escolher em árvore só o recorte final da entrega sem misturar as duas features.

xgf fs 1002/produtos-crud 2026.05-sprint-10
npm test
xgf ck
xgf fp
xgf fd 1002/produtos-crud
xgf fq 1002/produtos-crud
ComandoXGF
xgf fs 1002/produtos-crud 2026.05-sprint-10

O que faz: cria a feature de produtos a partir da mesma release da sprint.

O que produz: feature/1002-produtos-crud isolada das demais entregas e pronta para evolução paralela.

Atalho / equivalente: Equivale a xgf feature start -i 1002 -d produtos-crud -s 2026.05-sprint-10

ComandoNPM
npm test

O que faz: valida o CRUD de produtos antes das promoções.

O que produz: uma checagem local de regressão antes de gerar branches revisáveis.

ComandoXGF
xgf ck

O que faz: cria o checkpoint automático da feature atual.

O que produz: um commit local padronizado para produtos.

Atalho / equivalente: Equivale a xgf checkpoint

ComandoXGF
xgf fp

O que faz: se houver mudanças pendentes, abre a TUI em árvore para selecionar o que entra no commit final e sincroniza a feature com origin.

O que produz: um commit único com os itens escolhidos quando preciso e origin/feature/1002-produtos-crud pronto para aprovação futura pela TL.

Atalho / equivalente: Equivale a xgf feature push

ComandoXGF
xgf fd 1002/produtos-crud

O que faz: abre a trilha de promoção para develop.

O que produz: release-dev/1002-produtos-crud candidata ao PR em develop.

Atalho / equivalente: Equivale a xgf feature promote-dev -i 1002 -d produtos-crud

ComandoXGF
xgf fq 1002/produtos-crud

O que faz: abre a trilha de promoção para qa.

O que produz: release-qa/1002-produtos-crud candidata ao PR em qa.

Atalho / equivalente: Equivale a xgf feature promote-qa -i 1002 -d produtos-crud

4. Ana simula PRs, aprova, faz merge-back e fecha a sprint

TL

Como a simulação é local, as PRs foram representadas com git merge --no-ff no clone da TL antes da aprovação oficial na release e do fechamento do pacote em main.

git merge --no-ff origin/release-dev/1001-clientes-crud -m "PR: release-dev/1001-clientes-crud -> develop"
git merge --no-ff origin/release-qa/1001-clientes-crud -m "PR: release-qa/1001-clientes-crud -> qa"
xgf fa 1001/clientes-crud 2026.05-sprint-10
xgf mb 1001/clientes-crud 2026.05-sprint-10

git merge --no-ff origin/release-dev/1002-produtos-crud -m "PR: release-dev/1002-produtos-crud -> develop"
git merge --no-ff origin/release-qa/1002-produtos-crud -m "PR: release-qa/1002-produtos-crud -> qa"
xgf fa 1002/produtos-crud 2026.05-sprint-10
xgf mb 1002/produtos-crud 2026.05-sprint-10

xgf dt
xgf sc 2026.05-sprint-10 v2026.05.25-demo
ComandoGit
git merge --no-ff origin/release-dev/1001-clientes-crud ...

O que faz: simula o PR da promoção de clientes para develop no clone da TL.

O que produz: um merge commit explícito em develop, preservando a trilha da promoção.

ComandoGit
git merge --no-ff origin/release-qa/1001-clientes-crud ...

O que faz: simula o PR da promoção de clientes para qa.

O que produz: um merge commit em qa representando o aceite técnico da promoção para homologação.

ComandoXGF
xgf fa 1001/clientes-crud 2026.05-sprint-10

O que faz: aprova formalmente a feature de clientes dentro da release.

O que produz: merge da feature em release/2026.05-sprint-10 após o ciclo de QA.

Atalho / equivalente: Equivale a xgf feature approve -i 1001 -d clientes-crud -s 2026.05-sprint-10

ComandoXGF
xgf mb 1001/clientes-crud 2026.05-sprint-10

O que faz: abre as branches de merge-back da versão oficial de clientes.

O que produz: branches merge-back para equalizar develop e qa com o conteúdo já aceito na release.

Atalho / equivalente: Equivale a xgf merge-back -i 1001 -d clientes-crud -s 2026.05-sprint-10

ComandoGit
git merge --no-ff origin/release-dev/1002-produtos-crud ...

O que faz: simula o PR da promoção de produtos para develop.

O que produz: um merge commit explícito em develop para a segunda feature.

ComandoGit
git merge --no-ff origin/release-qa/1002-produtos-crud ...

O que faz: simula o PR da promoção de produtos para qa.

O que produz: um merge commit em qa, deixando a homologação da feature rastreável.

ComandoXGF
xgf fa 1002/produtos-crud 2026.05-sprint-10

O que faz: aprova o CRUD de produtos na release oficial da sprint.

O que produz: merge da feature de produtos na release após o aceite funcional.

Atalho / equivalente: Equivale a xgf feature approve -i 1002 -d produtos-crud -s 2026.05-sprint-10

ComandoXGF
xgf mb 1002/produtos-crud 2026.05-sprint-10

O que faz: prepara o retorno da versão oficial de produtos para as linhas compartilhadas.

O que produz: branches merge-back para develop e qa com o conteúdo já oficializado.

Atalho / equivalente: Equivale a xgf merge-back -i 1002 -d produtos-crud -s 2026.05-sprint-10

ComandoXGF
xgf dt

O que faz: mede a divergência restante entre develop e qa.

O que produz: um relatório com commits exclusivos, diferenças de arquivos e leitura funcional do delta.

Atalho / equivalente: Equivale a xgf delta

ComandoXGF
xgf sc 2026.05-sprint-10 v2026.05.25-demo

O que faz: fecha a sprint e publica o pacote em main.

O que produz: merge de release em main e criação da tag v2026.05.25-demo.

Atalho / equivalente: Equivale a xgf sprint close -s 2026.05-sprint-10 -t v2026.05.25-demo

Saída auditável

O exemplo termina com os dois CRUDs dentro de main e trilha completa de promoção.

Ao final da simulação, a release foi fechada com tag, os testes passaram em main e a estrutura de branches deixou claro o caminho de cada feature entre release-dev, release-qa, release e merge-back.

main validada3 testes0 falhas15 refs remotas

Tag do pacote

Identifica o fechamento operacional da sprint simulada.

v2026.05.25-demo

CRUDs aprovados

Os dois recursos entram em main depois do aceite e do merge da release.

clientes + produtos

Validação final

A última checagem foi executada já com main atualizada.

npm test -> 3 pass / 0 fail

Lição operacional

Checkpoint sem push não basta quando outra pessoa aprova a mesma feature de outro clone; se ainda houver pendências, o próprio push pode consolidar só o recorte certo antes da revisão remota.

xgf ck + xgf fp antes de xgf fa; ou xgf fp selecionando os arquivos finais

Pasta final de main na simulação

README.md
package.json
src/crudStore.js
src/resourceLoader.js
src/resources/.gitkeep
src/resources/clientes.json
src/resources/produtos.json
src/server.js
test/clientes-resource.test.js
test/produtos-resource.test.js
test/resource-loader.test.js

Branches e refs geradas pelo fluxo

origin/main
origin/develop
origin/qa
origin/release/2026.05-sprint-10
origin/feature/1001-clientes-crud
origin/feature/1002-produtos-crud
origin/release-dev/1001-clientes-crud
origin/release-dev/1002-produtos-crud
origin/release-qa/1001-clientes-crud
origin/release-qa/1002-produtos-crud
origin/merge-back/release/feature-1001-clientes-crud-to-dev
origin/merge-back/release/feature-1001-clientes-crud-to-qa
origin/merge-back/release/feature-1002-produtos-crud-to-dev
origin/merge-back/release/feature-1002-produtos-crud-to-qa
tag: v2026.05.25-demo

Conclusão operacional: xgf ck cria o commit local, e xgf fp envia a feature correta para revisão; se ainda houver pendências, ele também pode consolidar em árvore só os itens escolhidos antes do xgf fa.

O delta entre develop e qa vira dado operacional.

No fechamento da sprint, o time lê a divergência em três camadas: commits exclusivos, arquivos alterados e classificação funcional. A saída é um plano de tratamento, não uma percepção vaga de ambientes desalinhados.

Camada 1: commits exclusivos

visibilidade técnica

Identifica o que existe em um ambiente e não no outro, sem depender de memória coletiva.

git log --oneline develop ^qa
git log --oneline qa ^develop
git rev-list --left-right --count develop...qa

Camada 2: arquivos alterados

visibilidade de impacto

Mostra o delta de conteúdo entre as duas linhas, tornando a divergência observável por área afetada.

git diff --name-status develop..qa
git diff --name-status qa..develop

Camada 3: delta funcional interpretado

governança operacional

A diferença técnica precisa virar classificação operacional. Isso evita tratar um delta legítimo como incidente e esconder uma divergência real.

feature ainda em desenvolvimentofeature em homologaçãohotfix propagado parcialmentemerge-back pendenteresíduo históricodivergência indevida

O fechamento da sprint precisa registrar data, sprint de referência, volume de commits exclusivos, volume de arquivos divergentes, diferenças classificadas e plano de tratamento.

Perguntas que a liderança precisa responder antes de adotar.

O modelo só é útil quando seu custo operacional é menor que o custo de releases pouco legíveis. Estas respostas deixam o trade-off explícito.

xtreme-git-flow é só Git Flow com mais branches?

Não. As branches extras só fazem sentido porque separam decisões: expor em develop, expor em QA, aceitar na release, equalizar de volta e propagar hotfix. Sem essa disciplina, os nomes deixam de agregar controle.

Isso é pesado demais para time pequeno?

Muitas vezes, sim. Se o time faz deploy contínuo, confia no CI, usa bem feature flags e não precisa de pacote aprovado separadamente, GitHub Flow ou trunk-based tendem a ser melhores.

Por que forçar correção de QA de volta para a feature?

Porque, sem isso, o comportamento aceito se reparte entre release-dev, release-qa e commits emergenciais. A feature preserva a história funcional; branches de promoção apenas movem e integram essa história.

O que a liderança ganha com PRs extras?

Uma resposta repetível para quatro perguntas difíceis: o que está no pacote, o que QA aprovou, qual hotfix voltou para as linhas ativas e qual delta resta entre develop e qa.

Onde a adoção costuma falhar?

A adoção falha quando o time copia nomes de branch, mas ignora disciplina: corrige direto na promoção, aprova release antes de QA ou esquece merge-back e fechamento do delta.

Por que formalizar o delta develop/qa?

Porque divergência sem gestão vira trabalho escondido. O relatório permite classificar o que é legítimo, pendente, parcialmente propagado, histórico ou simplesmente incorreto.