【发布时间】: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。基本上,制定发布策略,但还要考虑如何进行错误修复。