Non vedo il problema qui.
Lo hai già fatto ogni volta con il tuo master
ramo, che continua a cambiare mentre le funzionalità vengono sviluppate e poi unite.
Quindi, nel tuo esempio concreto, devi prima creare il feature_xxx_backend
ramo e sviluppare le modifiche al back-end. Al termine, il ramo deve essere riesaminato e verrà unito in master
una volta completata la revisione.
Quindi, è sufficiente avviare un altro ramo, feature_yyy_frontend
. Probabilmente vorrai diramare direttamente feature_xxx_backend
, in modo da avere quelle modifiche già nel tuo branc. quindi semplicemente sviluppare la funzionalità di frontend come fosse il ramo master
.
Quando il feature_xxx_backend
ramo cambia, ad esempio perché durante la revisione ci sono cose che devono essere affrontate, è sufficiente apportare queste modifiche e unirle nel feature_yyy_frontend
ramo. Quindi continua sul ramo frontend.
Una volta completata la revisione del ramo back-end, viene unita master
. A questo punto, sarebbe saggio rifare il feature_yyy_frontend
ramo su master
, in modo che i revisori debbano solo rivedere le nuove modifiche a cui contribuisce questo ramo master
e non è necessario rivedere le modifiche apportate per il back-end (che sono già state approvate ).
Questo può essere fatto anche quando hai due, tre o più rami dipendenti. Se hai due rami di funzionalità su cui contare, crea semplicemente un ramo derivato in cui entrambe le funzioni sono state unite. Ramo da lì, sviluppa la terza funzione, unisci entrambi i rami di funzionalità lungo la strada quando ognuno di essi cambia. Quando entrambe le funzionalità sono terminate e vengono unite nel ramo derivato, si rifanno su quello o se si uniscono nel master, si rifanno al master.
Il rebasing (come suggerito sopra) è davvero potente e aiuta a tenere un registro pulito delle modifiche, rendendo le recensioni molto più facili.