我在有这个问题的地方工作过。虽然处理起来很困难,但我不会推荐@Marina在她的回答中提出的樱桃挑选工作流程。我不推荐它的原因是 git cherry-pick 打破了原始提交和樱桃选择之间的联系,因此Git的历史分析也获得了成功。
git cherry-pick
恕我直言,你有两个更好的选择,两者都有它们保留提交标识的优势,从而使源树更易于推理。
1(从现状变化较小但可能有点乏味)。
更改分支模型。大师(如果它甚至存在的话)不应该包含 所有 功能,但只有 核心 所有三个版本中的功能。如果某个功能仅应位于一个版本中,则只将其合并到该一个分支中。换句话说,您的发布过程应该是选择功能之一 包括 而不是那些 去掉 。
2(更大的变化,更多的努力,但将使未来的发展更容易)。
重新思考你的建筑。而不是要维护的三个版本的代码,只发布一个版本的应用程序,并将差异分解为配置文件或插件。如果你能做到这一点,你可能会看到你的代码质量的好处,而不仅仅是你的版本控制的简易性。
我会 非常 如果可能的话,建议选项2。