Attualmente sto lavorando a un progetto con un team che utilizza un flusso di lavoro git. È abbastanza semplice, il master dovrebbe essere in uno stato distribuibile e i rami vengono utilizzati per creare funzionalità e hotfix. Ogni volta che una funzionalità o correzione di bug è stata completata e testata, la spostiamo sul master il più presto possibile. L'idea è che i rami dovrebbero essere il più piccoli possibile per rendere più semplice la loro fusione nel master. Abbiamo una politica secondo cui qualsiasi codice inviato al ramo master dovrebbe trovarsi in uno stato distribuibile e superare i test.
Abbiamo avuto una situazione in cui uno degli sviluppatori ha lavorato molto (vale la pena alcuni mesi) su un singolo ramo e questo ramo non è stato ancora riunito nel master. Ora ci sono alcune funzionalità separate e un sacco di commit su questo ramo, in sostanza questo ramo avrebbe dovuto davvero essere fuso di nuovo in alcune volte, ma finora non lo è stato. La maggior parte del codice è in buono stato con unit test che potrebbero essere uniti in master, ma le modifiche più recenti non dovrebbero certamente essere poiché non sono state completate e non sono state testate.
Qual è il modo migliore per affrontare una situazione del genere in cui un ramo è davvero molto lontano dagli altri? In quali modi possiamo evitare che le filiali possano ottenere un numero molto elevato di commit dal master in futuro?