Depende de la naturaleza de las historias de los usuarios.
Puede ser efectivo crear una rama para cada historia de usuario, el progreso en diferentes historias son visibles, se pueden pasar si es necesario, si las historias no se completan en el sprint, el progreso puede permanecer en la rama para el próximo sprint . Las revisiones finales se pueden realizar al final de una historia de usuario en la rama de uso de la historia y fusionarse si el código está a la altura.
Para trabajar de la manera en que las historias deben ser finamente detalladas para evitar tareas de fusión inmanejables al final de un sprint. Las historias pequeñas permitirán una actualización constante de la rama de desarrollo a través del sprint del que los desarrolladores que trabajan en otras historias de usuarios deben obtener constantemente (VCM básico).
Esto crea gastos generales de proceso que tienen que crear y fusionar ramas constantemente, lo que en algunos casos se puede resolver con scripts de automatización, pero el equipo aún debe sentirse muy cómodo con el VCS.
Al final de un sprint, fusionas tu rama de desarrollo en integración / producción, etc.
También he trabajado en equipos donde todos trabajan desde una rama de desarrollo, al completar una historia de usuario, el código se envía a esa rama para su revisión y prueba, y si alguien empuja algo que rompe la construcción del desarrollo, tienen que conseguir las cervezas del equipo.