Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';git中web应用程序的理想分支架构是什么?_Git_Deployment_Branch - Fatal编程技术网

什么';git中web应用程序的理想分支架构是什么?

什么';git中web应用程序的理想分支架构是什么?,git,deployment,branch,Git,Deployment,Branch,我们是一个由开发人员组成的小团队,正在构建一个web应用程序。我们目前拥有一个实时、测试和多个开发环境 您会建议哪种分支体系结构,以便理想情况下每个开发人员都可以使用自己的功能,这些功能可以在不与其他开发人员/功能相切的情况下进行测试和部署 目前,每个开发人员都有自己的开发分支,并重新绑定到测试分支。一旦某个特性被批准,开发人员就会将其更改重新定位到主功能中 只要立即测试这些功能,这种方法就可以工作。但是,如果一个开发人员正在开发下一个功能,而之前的功能仍在测试中,那么我们需要手动处理 感谢您的

我们是一个由开发人员组成的小团队,正在构建一个web应用程序。我们目前拥有一个实时、测试和多个开发环境

您会建议哪种分支体系结构,以便理想情况下每个开发人员都可以使用自己的功能,这些功能可以在不与其他开发人员/功能相切的情况下进行测试和部署

目前,每个开发人员都有自己的开发分支,并重新绑定到测试分支。一旦某个特性被批准,开发人员就会将其更改重新定位到主功能中

只要立即测试这些功能,这种方法就可以工作。但是,如果一个开发人员正在开发下一个功能,而之前的功能仍在测试中,那么我们需要手动处理


感谢您的意见。

我假设您使用的是一个集中的裸存储库,每个人都在推动他们的更改,然后您将最新的
测试分支拉入测试环境

为什么不将Git用作实际的DVC,并在前一个特性的测试完成后将每个用户的特性拉入测试环境中呢

如果Bill正在开发FeatureX,而Ted正在开发FeatureY,他们可以分别在名为
testing/feature-x
testing/feature-y
的分支上提供他们的功能,您可以在测试环境中简单地签出
Bill:testing/feature-x

如果所有这些都失败了,在这里使用多个
测试/功能名称
分支将解决传统集中式系统中的问题。只需让您的用户将其
testing/…
分支推送到中央repo,将其拉到测试环境中,并在测试完成后移除分支即可。通过检查前缀为
testing/
的所有分支,您总能看到等待测试的功能列表。如果某个功能的测试失败,您将有一个特定于该功能的位于中心位置的分支,您可以在重新测试该功能之前添加新的提交来修复该功能


如果某个特性在将该特性重定为唯一的测试分支后测试失败,您现在要做什么?如果其他人在分支上重新设置了测试功能的基础,而分支现在包含一个已损坏的功能,该怎么办?

我遵循Vincent Driessen在其文章中描述的这一有用的指导原则已经有一段时间了


您可以在那里查看,您将看到他如何描述分支管理和避免回扣。对于web应用程序,您(希望)每天都部署工作代码,因此您可能会发现一个分支(主分支)就足够了。使用持续集成/部署,编写良好的测试,并将您的功能设计为小批量发布,而不是一次性发布。

(在OP和answer之后创建)在我探索选项时非常有用,基本上建议每个开发人员从一个
开发
分支进行分支,然后推回到那里,并定期为最新的更改(包括注意事项)进行重新调整.

Vincent的模型似乎更适合于不经常发布的桌面应用程序,而不是经常发布的web应用程序。我不同意这种方法,因为我对移动和web应用程序使用这种方法,我看不到他的方法与您的发布频率之间的联系。频率在哪里会成为一个问题?@FelipeSabino我和claymation有着相同的最初印象。我不明白当你每天或两天发布新代码时,发布分支是否有意义,以及你没有从项目管理的角度考虑发布。也。在这种情况下,您是否有一个正在进行的发布分支,或者您确实创建了一个新的发布分支,无论“发布”有多小/多么琐碎?@Chris如果您对每个新的生产发布都有太多的支持准备,以至于从创建发布分支到准备发布的时间都有太多的麻烦,然后我认为您的问题与git无关,您可以使用一些持续集成工具来解决它,如
Travis CI
Jenkins CI