在Git中管理并行版本的最佳方法是什么?

med*_*onn 9 git git-branch

我有一个完善的软件工具包,但通常需要小的调整(主要是为了应对来自第三方产品的兼容性问题).我现在希望生成一个"新"版本(改进的API),它将基于原始版本 - 随着时间的推移,它将与现有分支不同,但是几年后,我将需要保持原来的"实时"需要兼容性的现有客户.当然,我需要确保"调整"也适用于"新"版本,因为这些问题(在大多数情况下!)也适用于"新"版本.

所以 - 我的理想(简单)工作流程将是:

  1. 处理"新"版本时 - 更改仅适用于该版本.
  2. 在处理"旧"版本时,一旦我对它们满意(当我提交,提交或其他任何内容)时,所有得到的更改将(尽可能自动!)应用于两个版本.

我意识到需要偶尔的人工干预,合并是相互矛盾的,但根据过去手动更改的经验,我希望这种情况很少见.

目前,我正在寻求放弃VSS(是的 - 继续嘲笑我保持这么长时间!),我希望Git会让这很容易,但到目前为止,似乎没有任何"简单" "解决方案,我看到的所有建议都是围绕"rebase"构建的,这对我来说似乎是"错误的",因为rebase似乎做了许多其他的事情,比如重写历史,当我需要的只是一个简单,真实的时候" "根据其他分支的变化"前进.

  • 我在这里错过了什么吗?
  • 有没有更简单,更正确的方法来做到这一点?
  • 使用不同的源代码控制系统而不是Git,我会更好吗?

所有的想法非常感谢!

Sim*_*sen 5

您可以将旧分支的更改合并到新版本.

让我详细说明rebase:除非你是唯一一个在代码库上工作的开发人员,否则我不建议你使用rebase来解决这个特殊问题.请记住,自从重写历史记录以来,建议将rebase用于私有分支,从而使任何具有重新提交作为祖先的提交无效.

如果您将旧版本分支更改重新绑定到新版本上,那么每次需要将旧版本更改从newversion更改为newversion时,您将继续重写新版本分支的历史记录.这意味着,由于原始提交不再存在,所以使用新版本中的基础所做的任何工作(例如新版本独有的功能的功能分支)都将丢失.