Git Flow 流程发送用于测试的功能,仅将特定功能部署到上线

2024-01-18

我们正在努力解决 Git Flow 流程,并将功能部署到我们的测试和实时环境:

  • 我们希望所有已准备好测试的功能都可以combined并部署到测试环境。
  • 我们只想部署具体特征到现场环境

我们使用 Git Flow 的方式存在的问题:

  1. 开发人员 A 按照正常的 gitflow 流程从“develop”创建功能,并在新功能中进行开发。 当准备好测试时,他将其功能合并到“开发”分支中,并将“开发”分支部署到测试环境。

  2. 开发者 B 随后遵循相同的流程。这两个功能现在都合并到“开发”分支中,并且这两个更改在测试环境中都可见。

  3. 客户在测试环境中进行测试,但仅批准开发人员 A 所做的更改发布到实时环境。 因此,他将从“开发”创建一个新的“发布”分支。但这个问题是,这将包括开发者 B 的更改。

仅发布开发人员 A 的更改的最佳实践是什么?

目前,我们正在遵循以下过程,这使我们能够将每个功能发布到实时服务器。但一定有更好的办法吗?

我们遵循正常的 Gitflow 设置,但我们还创建一个名为“qa”的新分支,这将从主“分支”创建。 这是我们遵循的程序:

  1. 拉最新的“开发”分支
  2. 使用 gitflow 从“开发”创建功能
  3. 在一个功能中进行所有开发
  4. Once ready for testing,
    • 拉最新的“qa”分支
    • 在“qa”分支中
    • 将您的功能合并到“qa”中
  5. 将“qa”分支发布到QA服务器
  6. 如果需要修复任何错误,请从步骤 3 开始重复
  7. If the client for some reason do not need this feature anymore, and it needs to be removed
    • 删除该功能
    • 撤消合并到 qa
  8. 如果客户对测试感到满意,请选择您的功能,然后按照 git 流程完成该功能。 (这将合并到 “发展”)
  9. 选择开发分支,并使用 GitFlow 创建新版本
  10. 使用 Gitflow 完成发布(或根据需要捆绑多个版本)
  11. When ready to go live
    • 确保您在主分支中
    • 如果可能的话,测试项目并进行更改
    • 将所有需要的文件复制到Live服务器

但是通过创建这个“QA”分支,我们根本没有按照其预期使用开发分支,从而使其变得多余。

我通读了这些答案,但对我们没有太大帮助,或者我不明白here https://stackoverflow.com/questions/13887454/git-flow-releasing-selected-features and here https://stackoverflow.com/questions/8579056/multiple-development-branches-with-git-flow


四年后我会尝试回答我自己的问题。 尽管 @AlBlue 的另一个答案是 100% 正确的方法,但它并不总是可能的。

以下是四个 Gitflow 选项,可用于单独的测试环境,并仅允许将特定功能合并到 master 中:

  • 正如在最初的问题中提到的,创建一个单独的分支用于集成测试,并将每个功能合并到该分支中以供批准。更多信息可以在这里找到Git 分支模型策略 https://stackoverflow.com/questions/38048843/git-branching-model-strategy。缺点是你会有很多分支,如果其他选项是可能的,我不喜欢这个解决方案。
  • Cherry pick:经常合并到开发中,在开发上进行集成测试,一旦测试获得批准,就应该选择应该进入发布/主版本的功能。 (没试过,但似乎是一个任务)
  • 使用功能开关(正如 Alblue 提到的)
  • “修复你的流程,以便将 git 合并到 master 与客户测试分离”——正如 AlBlue 在他的回答中所说的那样。现在这是我们的首选选项,因为我们现在已经对自动化部署进行了排序。对于每个功能,只需单击一个按钮即可创建单独的托管环境(Azure devops + Azure 托管),因此每个功能在合并到开发之前都需要进行测试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git Flow 流程发送用于测试的功能,仅将特定功能部署到上线 的相关文章

  • git diff - 只显示哪些目录发生了变化

    有没有办法只列出已更改的目录 如果我在 git root 的话 project 我更改的文件是 project subtool file1 project subtool file2 project subtool3 file1 我只是想
  • Git:显示分支之间的差异,忽略合并的提交

    我的存储库历史记录看起来像这样 x y z branch a b c d e master 我想获得 branch 完整历史记录的单个差异 即 像 git diff 输出 我不想要像 git log p 产生的一大堆差异 而不包括任何从 m
  • 如何正确使用“mvn release:prepare”?

    我尝试了这个命令 用dryrun在我的 Maven 项目上进行测试 mvn release clean release prepare DdryRun true DgenerateBackupPoms false Dtag solocal
  • git 显示已添加到 gitignore 的文件中的更改?

    我已经将 log2 文件夹和 main js 文件添加到 gitignore 如屏幕截图所示 但即使执行后git rm cached r我仍然可以看到 git 正在检测 main js 和 log2 文件夹内文件的更改 怎么会 这些的常见问
  • git 匹配多个单词的标签

    我们可以得到最后一个 git 标签 它以一个单词 例如 TEST 开头 如下所示 git describe tag dirty match TEST 我想知道如何获得最后一个以 word1 开头的标签orword2 例如测试OR跑步 我尝试
  • 如何合并两个连续的 git 存储库

    我有一个相当独特的情况 我有一个名为 Project1 的存储库 我在其中工作了一些时间 几个月 一年后 我创建了存储库 Project1 Again 从 Project1 停止的地方开始 现在 我希望修订历史记录是连续的 因此我希望它们合
  • VS 2015 + Bower:在防火墙后面不起作用

    Problem 在 Visual Studio 2015 中 使用 Bower 我的包在防火墙后面时恢复失败 并出现类似以下内容的错误 ECMDERR 无法执行 git ls remote tags heads git github com
  • 在 Windows 7 上的 Sourcetree 中比较 Word docx 文件

    我一直在尝试获取在 Windows 7 上的 Sourcetree 中工作的 Word docx 文件的文本差异 我已按照此处的说明进行操作将 Microsoft Word 与 git 结合使用 http blog martinfenner
  • Rails/Ruby 合并两个具有相同键、不同值的哈希值

    我有两个想要合并的哈希值 它们看起来像这样 Hello gt 3 Hi gt 43 Hola gt 43 第二个哈希看起来像 Hello gt 4 Hi gt 2 Bonjour gt 2 我想合并这两个哈希数组 使结果看起来像 Hello
  • `git Reset HEAD file` 是否也检查该文件?

    我错误地向 git 添加了一个目录 当我按照提示操作时here https stackoverflow com questions 348170 undo git add通过执行以下操作来撤消添加git reset HEAD
  • GIT:以下未跟踪的工作树文件将被签出覆盖

    我有两个分支 一个称为 master 另一个称为 dev 我目前位于 master 分支 我想转到 dev 分支将文件移动到开发服务器 但是当我执行 git checkout dev 我收到消息 以下未跟踪的工作树文件将被覆盖 查看 pag
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • Git 提交失败:“请使用 -m 或 -F 选项提供消息。”

    当我键入 git commit 命令来提交文件时 我收到以下错误消息 Microsoft Visual Studio 微软 找不到命令 错误 核心编辑器 Microsoft Visual Studio 存在问题 请使用 m 或 F 选项提供
  • 如何使用 Git 跟踪目录而不是文件?

    我最近开始使用 Git 但只有一件事遇到了麻烦 如何在不跟踪目录内容的情况下跟踪目录 例如 我正在开发的网站允许上传 我想跟踪上传目录 以便在分支等时创建它 但显然不是其中的文件 在开发分支中的测试文件或主控中的真实文件 在我的 gitig
  • 带有 git Remote 的 Gem 文件在 Heroku 推送上失败

    我的 gemfile 中有以下行 gem client side validations git gt email protected cdn cgi l email protection Dakuan client side valida
  • 为所有子文件夹设置 git 配置值

    我知道可以设置每个存储库的配置来覆盖用户级配置 即 path to my repo gitconfig覆盖 gitconfig 是否可以设置 git 配置来覆盖给定文件夹的所有子文件夹的用户级设置 即 我有 topLevelFolder1
  • 通过 C# SqlCommand 执行合并语句不起作用

    我正在第一次尝试使用临时表和MERGE语句通过更新 SQL 表SqlCommandC 中的对象 我正在开发的程序旨在首先将大量记录 最多 20k 导出到 Excel 电子表格中 然后 用户可以搜索并替换特定值 并根据需要更新任意多记录中的任
  • git reflog 和 log 有什么区别?

    手册页说 log 显示提交日志 reflog 管理 reflog 信息 reflog 信息到底是什么 它有哪些日志没有的信息 日志看起来更详细 git log显示当前的 HEAD 及其祖先 也就是说 它打印提交 HEAD 指向的提交 然后打
  • Git 更改丢失 - 为什么?

    我们的开发团队正在使用 git 最近我们至少两次丢失了文件更改 我们正在使用私人 Github 存储库 在当前情况下 我们可以返回 Github 上的日志并查看我对文件所做的一些更新 后来 另一位团队成员更改了文件的不同部分 它似乎破坏了我
  • Git:从 master 以外的分支克隆

    我正在尝试从 Github 的存储库中提取数据 但我不想克隆主分支 我想克隆其他一些分支 当我尝试时git clone

随机推荐