目前,我们正在使用GitHub流(功能分支)策略。然而,这样做的问题是,有时候特性会在队列中等待发布,即
1.我有我的特色合并在开发(或主,我们只有)分支和部署到测试环境进行测试。
1.同时,我们希望开发或修复一些高优先级的错误/功能。如果不从develop分支恢复以前的代码,我就无法做到这一点。
为了解决这个问题,我尝试实现GitFlow分支策略。不过,我认为可能会出现与上述情况非常相似的问题,详情如下。
- 我创建了一个新的功能分支,完成了我的开发,并合并为开发
- 我们合并了更多的功能来开发
- 剪切一个新的发布分支(我们称之为release-A),然后将其部署到测试环境中进行测试。
- 在此功能正在测试的同时,有新的具有高优先级的功能请求
- 现在,如果我从latest develop分支出来,它有其他我不想部署到prod的特性(release-A)。(或与母版合并)
问题: - 我应该从PROD中的commit has分支,而不是从lastest、develop分支分支?
- 如果是,我应该从特性分支创建一个发布吗?
- 如何在测试中部署它,以便进行测试或两者(版本A和这个新特性可以并行发生)。后一点并不那么重要。
**注意:**我正在使用Microsoft Azure Data Factory,因此我需要合并一些更改以开发分支(与Azure Data Factory相关),否则我将无法发布这些更改(无法创建ARM模板以部署到其他环境)
3条答案
按热度按时间nsc4cvqm1#
检查https://nvie.com/posts/a-successful-git-branching-model,其中分支模型很好地可视化。
如果您的新的高优先级功能应该抢占ReleaseA并直接进入生产,我会认为它是一个修补程序,因此我会从最新的生产版本创建一个修补程序分支。在那里开发特性并测试它,然后直接合并到master分支和开发分支中。
特性分支是临时的分支,只会分支到开发中。因此,您永远不会从特性分支创建发布分支,也不会将特性分支直接合并到生产/主分支中。
z0qdvdin2#
现在,如果我从latest develop分支出来,它还有其他我不想部署到prod的特性(release-A)
问题是您有一个
develop
用于多个版本:那个“集成”分支(你在其中集成)多个特性分支,变得混乱,因为你最终得到了“你不想要的特性”最好有多个集成临时分支,也就是说,创建“开发”分支只是为了制作一个特定的版本(一旦完成,您就创建一个新的集成/开发版本来集成一组新的特性,或者是没有为上一个版本做好准备的旧特性分支)
这种方法的一个很好的例子是gitworkflow (one word)。
wbgh16ku3#
你有没有想过使用cherry pick来从develope分支到release分支挑选特定的提交?因此可以避免不需要的特征。
在准备发布版本时,从develope分支检出发布版本分支。
一些新的特性/bug修复仍然可以合并开发,但是你可以选择你想在你的版本中包含的特性。
See visualised diagram