如何在另一个功能中测试git flow功能

时间:2018-08-15 09:46:28

标签: git git-flow

因此,目前我在功能分支(例如f1)上,而develop分支在f1之前。
另一位开发人员正在开发一项新功能f2并提交到develop分支。现在,develop分支具有功能f2以及f1中不存在的其他功能。
现在,我只想测试功能f2,而无需测试develop上但不在我的分支机构f1中的所有其他功能。我该如何实现?

重要提示:完成测试后,我希望f2脱离我的f1分支。

现在,我通过以下方式进行操作:

  1. 存储我所有未更改的内容(git stash),因为我不确定是否要提交它们
  2. 樱桃在f2git cherry-pick f2)中选择提交
  3. 隐藏(git stash pop
  4. 测试
  5. 隐藏我所有未更改的更改(git stash
  6. 还原对f1的精心挑选的提交
  7. 取消隐藏未提交的更改
  8. 如果所有更改都可以,请在f1上提交

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我注意到两件事:

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

造成麻烦的原因是您实际上在某种程度上针对git模型以及git flow的预期工作方式。

要解决第一个问题,分支(在git的大脑中)只是指向提交的标签,并且该分支包含该提交,其父级和其父级的父级等。所有返回初始提交的方式。因此,您的分支不是“我的代码”,而是“项目历史记录加上我的代码”。

使用git flow时,develop成为开发团队的defacto主分支。因此,从本质上讲,一旦某些内容被合并到开发中,即使它尚未发布,也就是该项目的“正式”代码。

因此,如果F2 F3F7已全部合并到develop中,则仅使用F1来测试F2将永远无法为您提供有关如何将代码集成到主代码中的完整说明。

根据您的情况,继续我们的推理,而不是您的分支包含“项目历史记录,加上我的代码”,而是包含“某些版本的项目历史记录,加上我的代码”。要使用有点瑕疵的类比,您正在通过将2018年挡泥板用螺栓固定在1977年Mustang上并希望达到最佳效果,来设计2018 Mustang的车罩。

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


附录

正如您所说的那样,保持分支机构的清洁是团队的要求,变基是您的新好朋友。

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

这将满足团队的要求,即从历史角度将提交保持在一起,并使分支“干净”,同时允许您在创建分支后针对添加的所有代码进行测试。所有人都不需要跳舞,也不需要回滚。