git - Git 分支实践与未来和即将到来的代码混合
问题描述
我的团队正在使用具有典型开发 - 发布 - 主分支设置的 GIT。所有功能分支都是在开发之外创建的,而发布分支是在开发之外创建的。
但是,他们不想将功能分支合并回开发,而是希望首先将其提交到所有代码所在的未来代码分支 - 用于下一个产品版本和其他所有内容的东西。
这会产生一个问题,因为有时在将内容推送到未来代码时会出现合并冲突;当发生这种情况时,您必须与未来代码的提示合并以解决它,然后您的分支中就会有未来的东西。
他们想出了几种方法来防止原始分支被未来的东西污染。但我相信任何方式(保留原始副本、跟踪对樱桃采摘的提交等)都不是一个优雅的解决方案。
我相信不应该有未来的代码分支,如果你想及早展示 QA,那么你运行一个功能分支的构建 - 没有未来的代码分支。
是否还有其他人们成功使用的方法不会将 GIT 扭成一个结?
感谢您提供任何有用的提示。
解决方案
您直接从分支中面临的问题develop
是您增加了人们添加提交的复杂性,而 QA 可能不希望在构建中添加这些提交。此外,如果 QA 带回一个 bug 让您检查分支并使用它(因为开发人员每天提交很多),也没有可靠的流程或方法。
如果您从开发人员本地功能分支提供构建,事情就会开始重复,并且 QA 无法处理他们获得的构建数量。我们倾向于每周提供包含许多功能的构建。
我倾向于坚持坚实的结构
ReleaseCandidate - this is where live code is
BetaCandidate - this is where 'future' code lives
DeveloperMaster - this is where every developer puts there code in
这给你的是:
- DeveloperMaster 只能合并到 BetaCandidate
- BetaCandidate 只能合并到 ReleaseCandidate
- 开发人员在 DeveloperMaster 中完成所有提交
当需要构建时,专门的开发人员会将所有功能合并到 BetaCandidate 中,并将构建提供给 QA。QA 回来了,50 个新功能中有 3 个失败了,您现在从 BetaCandidate 中挑选并删除这些提交,并将 BetaCandidate 合并到 ReleaseCandidate 并发布它。
然后,开发人员仍然在 DeveloperMaster 中进行旧更改,并且可以解决该错误,并且此功能将进入下一个 beta 版本。
如果需要在发布之前修复该功能,开发人员会在 DeveloperMaster 中进行更改,并选择提交到 BetaCandidate 中。
你有这个可靠的 git 流,它只允许向前移动。
推荐阅读
- python-3.x - Kivy 中的可滚动动态网格布局
- java - 如何在 Intellij IDEA 中使用 openjfx-11 存档?
- docusignapi - DocuSign 登录 API 超时错误
- regex - sed & 正则表达式
- java - 如何检查用户是否在java中输入了符号?
- php - 一个非常基本的 PHP 修改,我无法用谷歌的话来形容
- macos - mac + tableau + kerbores + hive + cloudera gssMinor 代码可能会提供更多信息(未找到支持加密类型的凭据
- python - 盘中数据的每日高点/低点
- r - R在数据框中创建条件随机变量
- c# - 调用EF Core扩展方法的c#单元测试方法