首页 > 解决方案 > 如何在另一个功能中测试 git flow 功能

问题描述

所以目前我在一个特性分支上(比如说f1),这个develop分支在f1.
另一位开发人员正在开发一项新功能f2并提交到该develop分支。现在该develop分支具有该功能f2以及其他未在f1.
现在,我只想测试该功能f2,而不测试所有其他已启用develop但不在我的分支中的功能f1。我怎样才能做到这一点?

重要提示:完成测试后,我想f2离开我的f1分支。

现在我正在通过以下方式执行此操作:

  1. 存储我所有未更改的更改(git stash),因为我不确定我是否要提交它们
  2. f2樱桃选择( git cherry-pick f2) 中的提交
  3. 卸载 ( git stash pop)
  4. 测试
  5. 存储我所有未更改的更改(git stash
  6. 恢复精选的提交f1
  7. unstash 未提交的更改
  8. f1如果所有更改都正常,则提交

有一个更好的方法吗?

标签: gitgit-flow

解决方案


我注意到两件事:

  1. 您似乎F1只是认为您已添加到分支中的那些提交
  2. 因此,您正试图F1通过积极阻止您没有为该功能创建的任何代码成为分支的一部分来保持分支“干净F1

这造成困难的原因是您实际上在某种程度上针对 git 模型和 git flow 的工作方式。

为了解决第一个问题,分支(在 git 的大脑中)只是一个指向提交的标签,并且分支包含该提交、其父级及其父级的父级等。到初始提交。所以你的分支不是“我的代码”而是“项目历史,加上我的代码”。

当使用 git flow 时,develop 成为开发团队事实上的 master 分支。所以本质上,一旦某些东西被合并到开发中,它就是项目的“官方”代码,即使它还没有发布。

因此,如果F2 F3F7已全部合并到中,仅develop测试将永远无法让您全面了解您的代码将如何集成到主行代码中。F1F2

为了继续我们的推理,在您的情况下,您的分支不是包含“项目历史记录,加上我的代码”,而是包含“项目历史记录的一些过时版本,加上我的代码”。用一个有缺陷的类比,你正在为 2018 年的野马设计一个车罩,将 2018 年的挡泥板固定在 1977 年的野马上,并希望获得最好的结果。

防止您的功能过时的推荐机制是定期将开发合并到您的功能分支中,或者将您的功能分支重新定位到新的开发负责人(取决于您是否共享了您的代码和工作流偏好你的团队)。功能分支的开发人员始终负责解决冲突并确保已合并以进行开发的功能的完整性。


附录

正如您所说,保持分支清洁是团队的要求,rebase 是您最好的新朋友。

$ git checkout F1
$ git fetch
$ git rebase origin/develop

这将满足团队的要求,即从历史的角度保持您的提交和分支“干净”,同时允许您针对创建分支后添加到开发的所有代码进行测试。所有这些都没有舞蹈,也不需要回滚。


推荐阅读