如何维护两个或多个从不合并的不同分支?

How to maintain two or more divergent branches that never merge?

我在 git 中维护一个 Redis Sentinel library for Laravel,有两个活跃的开发分支:

1.x   ... o ———— o —————— o — o — o — o — o ...
           ↘              ↑   ↑     ↖
2.x   (breaking change) — o — o — o — o — o ...

如上图所示,我分叉 1.x 以适应与该库集成的较新版本框架的重大更改,但我发现自己 cherry-pick在分支之间提交或手动复制代码,以更新两个分支中的通用功能。

似乎我永远无法合并这些分支,因为它们每个都包含彼此不兼容的代码。我可以遵循什么更好的工作流程来减少合并分支之间常见更改所需的工作量?

这个古老的问题。分支还是不分支。

这里真的没有灵丹妙药。他们必须保持分歧的原因是什么?如果由于新架构实施之类的原因,它们注定永远不会重新组合在一起,那么您是否有理由不能将 1.x 迁移到 2.x 或在宣布后完全弃用 1.x时间段等?

这些通常是必须做出的艰难选择 - 由于与不断合并相关的维护开销,弃用并停止支持旧的或不同的更改,或者只是接受它。只要意识到,如果您接受它,您就会将时间花在那些本来可以花在新功能上的开销上。

一个分支保持分歧且没有调和分歧的计划的时间越长,您可能拥有的技术债务就越多,这让您经常忙碌,并且可能会不断增长。

我知道这不是一个很好的解决方案,但我不知道还有什么其他选择 - 如果您允许差异但没有计划在未来重新合并它们,那么差异就会存在并且持续维护将会无论您想保持不变,都需要。如果不深入了解您的特定项目的具体细节,我不知道任何其他答案。