我和我的队友为一家软件供应商工作,为客户构建一个大型软件。数十名开发人员使用 Git 进行源代码控制。我们有 4 个版本:
- 0.9:生产中
- 0.9.1:在客户端进行测试
- 1.0:由我们(软件供应商)测试
- 1.1:正在建设中
我们目前的工作实践是,当您修复例如 0.9.1 中的错误时,
- 您提取最新的 0.9.1,然后将您的修复推送到 0.9.1
- 切换到 1.0,拉取最新的 1.0,合并 0.9.1,推送到 1.0
- 切换到 1.1,拉取最新的 1.1,合并 1.0,推送到 1.1
问题在于,对于数十个开发人员,通常有多个人试图同时推动他们的修复。结果,人们经常进行相同的合并,合并彼此的更改。例如:
- dev1 将 fix1 推送到 0.9.1,拉取 1.0 并开始合并
- 当 dev1 合并到 1.0 时,dev2 将 fix2 推送到 0.9.1,拉取 1.0 并开始合并他们自己的 fix2,但也会合并 fix1
- 另外还需要对 1.1 进行合并。
我怀疑由于所有这些痛苦,人们倾向于在他们的本地机器上进行大量提交(未备份),然后进行大型合并,比如每天一次或每两天一次 - 所以其他开发人员会处理过时的代码。
我猜这个问题也发生在其他基于 Git 的大型项目上。想听听从事过此类项目的人如何处理此问题。