我有一个非常成熟的软件工具包,但它通常需要很小的调整(主要是为了应付来自第三方产品的兼容性问题)。我现在希望生成一个“新”版本(改进的API),它将基于原始版本 - 这将与现有分支不同,随着时间的推移,但几年之后,我将需要保留原始的“现场”为了兼容性而需要它的现有客户。当然,我也需要确保“调整”也适用于“新”版本,因为这些问题(也会在大多数!)也适用于“新”版本。在Git中管理并行版本的最佳方式是什么?
所以 - 我的理想(简单)的工作流程是:
- 在“新”版本中工作时 - 更改仅适用于该 版本。
- 当处理“旧”版本时,所有产生的变化 都会(尽可能自动)自动应用于两个版本 ,一旦我对它们感到满意(当我提交,提交或其他)时。
我意识到需要偶尔进行手动干预,合并是冲突的,但根据过去人工更改的经验,我认为这很少见。现在,我正在放弃VSS(是的 - 继续嘲笑我保持这么久!),我希望Git能够让这个简单,但到目前为止,没有出现到任何“简单”的解决方案,我看到的建议都是围绕“rebase”构建的,这对我来说似乎是“错误的”,因为rebase似乎做了很多其他的事情,比如重写历史记录,当我需要的只是一个简单,真实的“前进”基于来自其他分支的变化。
- 我在这里错过了什么吗?
- 是否有一个更容易,正确定义的方式来做到这一点?
- 用不同的源码控制系统而不是Git会更好吗?
非常感谢所有的想法!
我认为你在这里错过了一些东西,因为'rebase'被设计为*完全*用于你的用例。它重写历史,因为它*应该*。如果你做得对,它只会在特定的本地分支中重写历史记录,因此中央仓库中的历史记录都不会被重写。 – 2012-04-22 09:22:12
你也可以直接合并,以使事情变得更简单,但rebase是一个更好的解决方案。 – 2012-04-22 09:23:12
相关:http://stackoverflow.com/questions/457927/git-workflow-and-rebase-vs-merge-questions – 2012-04-22 09:30:19