【问题标题】:Git - Development with multiple environmentsGit - 多环境开发
【发布时间】:2020-10-23 09:46:40
【问题描述】:

我们是一家小型软件开发公司,最初只有 2 人,但现在正在稳步发展。因此我们需要一个使用 Git 的开发策略,但是我们遇到了一些问题。我们使用 Gitlab 作为我们的 Git 提供者。

情况:

  • 我们有 3 个环境都运行不同版本的代码:开发、QA 和生产
  • 每个环境都有自己的 Git 分支:开发、QA 和生产
  • 我们使用 Jenkins 为每个环境提取和构建正确的分支。目前这不是自动化的,但我们打算在未来实现自动化。
  • 启动新功能或修复时,我们通过从生产分支创建功能分支。我们会在需要时编写代码并将我们的功能分支与开发、QA 和生产合并

现在我们遇到的问题是,当我们将功能分支合并到开发和 QA 中时,使用合并请求,我们还会看到在生产中完成的更改。但是这些更改已经与开发和 QA 合并,所以这些都没有效果。然而,这使得跟踪提交和进行代码审查变得极其困难。

我们是一支年轻的团队,这是我们第一次处理此类问题。可能是我们必须完全改变我们的 Git 策略,因此非常欢迎就实施不同策略的多种可能性提供一些反馈。

【问题讨论】:

  • 在合并到开发和 QA 时,您是否使用 squash-and-rebase 作为合并策略?
  • @LasseV.Karlsen 我们不会压缩提交,因为我们希望拥有更改历史记录。
  • @Cerebres Squashing 提交不会删除更改历史记录,它实际上使其更具可读性和更易于使用。
  • @Mit94:就目前而言确实如此,但有时它会走得太远。 :-) 更准确地说,当使用git merge --squash 时,您通常最好关闭进行原始提交的分支。您将 N 个原始提交换成一个执行 N 个原始提交所做的单个提交。根据原始提交,这可能是好是坏(或混合)。
  • 对于发布时遇到的问题没有灵丹妙药,但我建议通读整套文章here。基本上,制定发布策略,但还要考虑如何进行错误修复。

标签: git gitlab devops


【解决方案1】:

这个问题有点宽泛,您可以在这里采用多种策略。

通常,每个环境有一个分支最终会使部署管道复杂化,因为 Git 分支不是为发布管理而设计的。 Git 旨在使用“标签”进行发布管理。

这是如何工作的:

  • 所有功能分支都合并到主分支
  • 最新的 master 已经过 QA 测试。当 QA 完成测试后,标记提交并将其发布到生产环境。
  • 如果master有bug,先修复bug再合并新特性。

需要注意的是,功能分支在合并之前必须经过开发人员和审核人员的彻底测试。我会说这是开发人员和审阅者所期望的最低限度的努力。

【讨论】:

    猜你喜欢
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 2011-03-13
    • 2011-03-04
    • 1970-01-01
    相关资源
    最近更新 更多