我们有一个标准的Web项目,并为该项目维护3个核心分支:Master,Beta和Develop.以下是我们使用的流程/工作流程的摘要:
(1)请求新功能/更新,以便我们创建新的功能分支.
(2)为新功能分支进行提交,并将功能分支合并到"开发"分支中; 然后将"开发"分支发布到要测试的测试环境.
(3)测试/批准新功能后,在同一功能分支中进行新的拉取请求; 这个新的pull请求被合并到'Beta'分支中.
'Beta'分支拥有我们所有的"准备就绪"功能:事实上,我们将'Beta'分支直接发布到生产环境,当它准备就绪时,我们立即将'Beta'分支合并到'Master'分支......通过这样做,'Master'分支始终是生产环境中代码的副本.
问题:在上面的步骤3中,当我们尝试将新的Feature分支合并到'Beta'分支时,pull请求包括已合并到'Develop'分支的所有新提交.
示例:5个要素分支分别合并到"Develop"分支(分支标记为1,2,3,4和5).所有5个都经过了测试,但是前面有4个错误.所以分支"5"被批准,我们尝试为该功能分支创建一个拉取请求并将其合并为"Beta"....但是当我们这样做时, pull请求包括所有5个功能分支....而不仅仅是分支"5"的提交.
我们必须做错事!我们可以做些什么来修复我们的流程/工作流程?
(3)测试/批准新功能后,在同一功能分支中进行新的拉取请求; 这个新的pull请求被合并到'Beta'分支中.
'Beta'分支拥有我们所有的"准备就绪"功能:事实上,我们将'Beta'分支直接发布到生产环境,当它准备就绪时,我们立即将'Beta'分支合并到'Master'分支......通过这样做,'Master'分支始终是生产环境中代码的副本.
问题:在上面的步骤3中,当我们尝试将新的Feature分支合并到'Beta'分支时,pull请求包括已合并到'Develop'分支的所有新提交.
不,这没有意义.如果发生这种情况,您就省略了重要信息,例如:
在每种情况下,您的工作流程都会从根本上被打破,并且无法满足您对beta分支的看法.因此,如果你想避免挑选(糟糕!糟糕!糟糕!)你怎么能实现你想做的事情?有一些基本选择: