Esse é o problema exato que tenho com o gitflow e o fluxo do GitHub, e parece que com aplicativos da Web isso acontece com frequência - ou mais como a norma. Parece que você resolveria esse problema retroativamente (mencionado acima) ou proativamente (exemplo abaixo).
Eu criei 'bundle branches' além dos branches padrão do gitflow. O pacote configurável consiste em todos os recursos que estão prontos para o uat / qa. Uma lista de recursos uat / qa é criada. Eles são mesclados no pacote temporário e esse pacote é implementado no uat / qa. Qualquer correção de bug ocorre na ramificação do recurso original e é reenviada ao pacote configurável e implantada. Isso separa a próxima versão, além de permitir testar esses recursos juntos antes que eles encontrem o caminho para o ramo de desenvolvimento. As ramificações aprovadas desenvolvem uma solicitação de recebimento - seguindo o processo do gitflow. Os recursos prontos para teste podem ser adicionados ou removidos da ramificação do pacote temporário e reimplementados.
- Isso mantém o mestre sempre refletindo o estado pronto para produção (pode ser automatizado com gancho)
- O desenvolvimento sempre reflete o candidato mais recente entregue (e testado) para o próximo lançamento
Os contras incluem gerenciar a lista de pacotes configuráveis e adicionar outro tipo de filial; no entanto, além da correção retro, que acho tarde demais, esta parece ser a solução mais viável.
Com um complemento da GUI, pode ser ideal marcar as ramificações de recursos por implantação de pacote - com a automação em mente.