Actualmente estoy trabajando en un proyecto con un equipo que usa un flujo de trabajo git. Es bastante simple, el maestro debe estar en un estado desplegable y las ramas se utilizan para crear características y revisiones. Cada vez que tenemos una función o corrección de errores completada y probada, la trasladamos a master lo antes posible. La idea es que las ramas sean lo más pequeñas posible para que sea más fácil fusionarlas nuevamente en master. Tenemos una política de que cualquier código enviado a la rama maestra debe estar en un estado desplegable y pasar las pruebas.
Tenemos una situación en la que uno de los desarrolladores ha trabajado mucho (unos meses) en una sola rama y esta rama aún no se ha fusionado con el maestro. Ahora hay algunas características separadas y un montón de confirmaciones en esta rama, esencialmente esta rama realmente debería haberse fusionado varias veces, pero hasta ahora no lo ha sido. La mayor parte del código está en buen estado con las pruebas unitarias que podrían fusionarse nuevamente en el maestro, pero los cambios más recientes ciertamente no deberían ser ya que no se completan y no se prueban.
¿Cuál es la mejor manera de lidiar con una situación en la que una rama está muy lejos de las demás? ¿De qué maneras podemos evitar que las sucursales obtengan una gran cantidad de confirmaciones del maestro en el futuro?