Atualmente, estou trabalhando em um projeto com uma equipe que usa um fluxo de trabalho git. É bastante simples, o mestre deve estar em um estado implementável e as ramificações são usadas para criar recursos e hotfixes. Sempre que tivermos um recurso ou correção de bug concluído e testado, passamos a dominar o mais rápido possível. A idéia é que os ramos sejam o menor possível para facilitar a mesclagem deles de volta ao mestre. Temos uma política de que qualquer código enviado para a ramificação principal deve estar em um estado implementável e ser aprovado nos testes.
Temos uma situação em que um dos desenvolvedores fez muito trabalho (alguns meses no valor) em uma única ramificação e essa ramificação ainda não foi incorporada ao master. Agora, existem alguns recursos separados e muitos commits nesse ramo, essencialmente esse ramo já deveria ter sido mesclado algumas vezes, mas até agora não foi. A maior parte do código está em bom estado com testes de unidade que podem ser mesclados novamente no mestre, mas as alterações mais recentes certamente não devem ocorrer, pois não são concluídas e não são testadas.
Qual é a melhor maneira de lidar com uma situação em que um ramo está muito longe dos outros? De que maneiras podemos evitar que as filiais obtenham um número muito grande de confirmações do master no futuro?