Git: Como mesclar corretamente dois ramos funcionais e bastante diferentes?

Imagine uma situação em que você tem dois ramos do mesmo projeto, com uma parte do primeiro ramo dramaticamente refatorada sobre o outro. Mas por um tempo você precisa manter ambos os ramos funcionais, então você está fazendo correções de bugs e adições de recursos cruciais a ambos, às vezes de forma não simétrica. E em algum momento chega um momento em que você precisa fundir o branch refatorado no branch original. Qual é a melhor técnica para usar em uma situação como essa? Ainda é possível manter o histórico limpo?

Mas, mais importante, qual deveria ter sido minha estratégia inicial nesse cenário?

questionAnswers(2)

yourAnswerToTheQuestion