Não vejo o problema aqui.
Você já tem isso o tempo todo com sua master
filial, que continua mudando enquanto os recursos são desenvolvidos e depois mesclados.
Portanto, em seu exemplo concreto, você primeiro cria a feature_xxx_backend
ramificação e desenvolve as alterações de back-end. Quando isso for feito, a filial poderá revisar e será mesclada master
assim que a revisão for concluída.
Então, simplesmente inicie outro ramo feature_yyy_frontend
,. Você provavelmente desejará ramificar diretamente de feature_xxx_backend
, para que você já tenha essas alterações em seu branc. então simplesmente desenvolva o recurso de front-end como o ramo era master
.
Quando a feature_xxx_backend
ramificação muda, por exemplo, porque existem coisas que surgem durante a revisão que precisam ser corrigidas, basta fazer essas alterações e fundi-las na feature_yyy_frontend
ramificação. Continue na ramificação da interface.
Depois que a revisão da ramificação de back-end é concluída, ela é mesclada master
. Nesse ponto, seria aconselhável refazer a feature_yyy_frontend
ramificação para master
que os revisores precisem revisar apenas as novas alterações para as quais essa ramificação contribui master
e não precisem revisar novamente as alterações feitas no back-end (que já foram aprovadas )
Isso também pode ser feito quando você tem dois, três ou mais ramos dependentes. Se você possui dois ramos de recurso dos quais você depende, basta criar um ramo derivado com ambos os recursos mesclados. Ramificar a partir daí, desenvolver o terceiro recurso, mesclar os dois ramos de recurso ao longo do caminho quando cada um deles mudar. Quando os dois recursos estiverem concluídos e forem mesclados na ramificação derivada, refazem-se a isso ou, se eles forem mesclados no mestre, faça uma nova recuperação no mestre.
O rebaseamento (como sugerido acima) é realmente poderoso e ajuda a manter um registro limpo das alterações, facilitando muito as revisões.