我们是一家小型软件开发公司,最初只有 2 个人,但现在正在稳步发展。因此我们需要一个使用 Git 的开发策略,但我们遇到了一些问题。我们使用 Gitlab 作为我们的 Git 供应商。
情况:
- 我们有 3 个环境都运行不同版本的代码:开发、QA 和生产
- 每个环境都有自己的 Git 分支:开发、QA 和生产
- 我们使用 Jenkins 为每个环境 pull 和构建正确的分支。目前这不是自动化的,但我们打算在未来实现自动化。
- 开始新功能或修复时,我们通过从生产分支创建功能分支。我们编写代码并将我们的功能分支与开发、QA 和生产 merge 。
现在我们遇到的问题是,当我们使用 merge 请求将我们的功能分支 merge 到开发和 QA 时,我们还会看到在生产环境中所做的更改。但这些更改已经与开发和 QA merge ,因此这些更改无效。然而,这使得跟踪提交和进行代码审查变得极其困难。
我们是一支年轻的团队,这是我们第一次处理此类问题。可能我们必须完全改变我们的 Git 策略,因此非常欢迎就实现不同策略的多种可能性提供一些反馈。
最佳答案
这个问题有点宽泛,您可以在这里采用多种策略。
通常,每个环境有一个分支最终会使部署管道复杂化,因为 Git 分支不是为发布管理而设计的。 Git 旨在使用“标签”进行发布管理。
这是如何工作的:
- 所有功能分支都 merge 到 master
- 最新的母版由 QA 测试。 QA 完成测试后,标记提交并将其发布到生产环境。
- 如果 master 中存在错误,则在 merge 新功能之前先修复错误。
一个警告是功能分支必须在 merge 之前由开发人员和审查人员进行彻底测试。我想说这是您期望开发人员和审核人员付出的最少努力。
关于Git - 多环境开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64497699/