Git, trabajando con dos twigs y dos equipos separados, fusionando ambas twigs para dominar

Este es un escenario común en mi compañía, actualmente usando Svn:

Hay dos equipos trabajando en un proyecto. Un equipo de "mantenimiento" trabajando en algunas correcciones de errores en una sucursal y otro equipo de "soporte" trabajando en nuevas funciones en otra sucursal. El equipo de mantenimiento debe mover sus cambios a la producción antes de que el equipo de soporte pueda finalizar sus nuevas funciones, de modo que finalicen las correcciones de errores y vuelvan a fusionar su twig en el tronco. Luego de un par de días, el equipo de soporte finaliza las nuevas funciones y se fusiona con el tronco también, resolviendo cualquier conflicto, si existe.

¿Cuál sería el flujo de trabajo típico (y los commands utilizados) para este escenario usando Git?

Sin saber cuál es la forma más común, lo haría:

  • mantenimiento fusiona sus cambios en master :
    git checkout master
    git merge maintenance
  • soporte de rebases en el master
    git rebase master
  • el apoyo se fusiona en el master
    git checkout master
    git merge support

De esta forma, el master recibe las soluciones primero, luego el equipo de support puede verificar si los cambios se hacen de forma clara (es decir, sin conflictos) y, una vez hecho, fusionar su twig de support también en master .

Si estás buscando un model de ramificación Git funcional (y popular):
http://nvie.com/posts/a-successful-git-branching-model/

Allí, Vincent Driessen describe cómo lidia con múltiples twigs de desarrollo, hotfixes, twigs de lanzamiento, etc.