Actualmente estoy trabajando en un proyecto con un equipo que utiliza un flujo de trabajo de git. Es bastante simple, el maestro debe estar en un estado desplegable y las sucursales se utilizan para crear características y revisiones. Cada vez que tenemos una característica o corrección de errores completada y probada, la pasamos al maestro tan pronto como sea posible. La idea es que las ramas deben ser lo más pequeñas posible para que sea más fácil volver a combinarlas en el maestro. Tenemos la política de que cualquier código enviado a la rama maestra debe estar implementado y pasar las pruebas.
Tenemos una situación en la que uno de los desarrolladores ha trabajado mucho (en unos pocos meses) en una sola rama y esta rama aún no se ha vuelto a integrar en el maestro. Ahora hay algunas características separadas y un montón de confirmaciones en esta rama, esencialmente esta rama debería haberse fusionado en algunas ocasiones, pero hasta ahora no lo ha sido. La mayoría del código está en buen estado con pruebas unitarias que podrían fusionarse de nuevo con el maestro, pero los cambios más recientes no deberían ser ya que no se completaron y no se probaron.
¿Cuál es la mejor manera de enfrentar una situación en la que una rama está realmente lejos de las otras? ¿En qué formas podemos evitar que las sucursales obtengan un gran número de confirmaciones fuera del maestro en el futuro?