No veo el problema aquí.
Ya tienes esto cada vez con tu rama master
, que cambia constantemente mientras las funciones se desarrollan y luego se combinan.
Entonces, en su ejemplo concreto, primero crea la rama feature_xxx_backend
y desarrolla los cambios de backend. Cuando se haga esto, la rama estará lista para revisión y se fusionará en master
una vez que se complete la revisión.
Entonces, simplemente inicie otra rama, feature_yyy_frontend
. Probablemente querrás pasar de feature_xxx_backend
, para que ya tengas esos cambios en tu branc. luego simplemente desarrolle la función de interfaz de usuario si la rama fuera master
.
Cuando la rama feature_xxx_backend
cambia, por ejemplo, Debido a que hay cosas que surgen durante la revisión que deben ser dirigidas, simplemente haga estos cambios y combínelos en la rama feature_yyy_frontend
. Luego continúe en la rama del frontend.
Una vez que se completa la revisión de la rama de back-end, se fusiona en master
. En este punto, sería prudente reajustar la rama feature_yyy_frontend
en master
, de modo que los revisores solo tengan que revisar los cambios nuevos a los que contribuye esta rama master
, y no es necesario volver a revisar los cambios realizados para el backend (que ya han sido aprobados).
Esto también se puede hacer cuando tienes dos, tres o más ramas dependientes. Si tiene dos ramas de características de las que depende, simplemente cree una rama derivada que tenga ambas características fusionadas. Rama desde allí, desarrolle la tercera característica, combine ambas ramas de características en el camino cuando cada una de ellas cambie. Cuando ambas funciones se completan y se fusionan en la rama derivada, se vuelve a establecer en eso, o si se combinan en maestro, se vuelve a convertir en maestro.
Rebasar (como se sugirió anteriormente) es realmente poderoso y ayuda a mantener un registro limpio de los cambios, lo que facilita las revisiones.