Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.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工作流,允许独立部署功能_Git_Git Flow - Fatal编程技术网

推荐的git工作流,允许独立部署功能

推荐的git工作流,允许独立部署功能,git,git-flow,Git,Git Flow,在我们的组织中,我们目前使用以下流程 要素分支是从生产分支派生出来的。功能在开发人员机器上的功能分支中实现。然后,功能分支被合并到自动部署在临时服务器上的develop分支中 该功能由登台服务器上的用户进行测试,如果业务部门认为它很好,并且是时候在live server上部署它了,则第二次合并功能分支,这次合并到部署在生产服务器上的生产分支中 但由于各种原因,有些功能被放弃了。例如,业务部门认为现在还不是将该功能部署到实时服务器的时候。或者也许不再需要了。或许一年后我们会回到这个话题上。在我的图

在我们的组织中,我们目前使用以下流程

要素分支是从生产分支派生出来的。功能在开发人员机器上的功能分支中实现。然后,功能分支被合并到自动部署在临时服务器上的
develop
分支中

该功能由登台服务器上的用户进行测试,如果业务部门认为它很好,并且是时候在live server上部署它了,则第二次合并功能分支,这次合并到部署在生产服务器上的
生产
分支中

但由于各种原因,有些功能被放弃了。例如,业务部门认为现在还不是将该功能部署到实时服务器的时候。或者也许不再需要了。或许一年后我们会回到这个话题上。在我的图片中,
feature/1
从未合并到
production
分支中,而是合并到
develope
分支中

这意味着
开发
分支与
生产
分支的分歧越来越大。请注意,
develope
never合并到
production
(在规范的git流中,
develope
通过使用
release
分支合并到
production

在我看来,这个工作流程需要大量的体力劳动。因为
production
develope
是不同的,所以在将功能分支合并到
develope
进行测试时,需要手动合并。这也很容易出错,因为我们在
develope
中有来自功能分支的旧的未使用代码,这些代码永远不会消失。这不仅使合并变得复杂,而且还意味着特征分支代码在
开发
生产
分支中的工作方式可能不同,因为旧的未合并代码会影响特征代码

另外,我有一种感觉,随着每一项新功能的出现,这将使工作变得越来越复杂,因为
developer
production
之间的差异将不可避免地增加。在流程中,
develope
production
没有协调一致的地方,因此我担心一年后,也许10000多次提交之后,合并将变得过于复杂,无法处理。即使现在我们也有合并错误。有些是明显的,有些是微妙的,很难找到

我已经多次向CTO提出这样一个问题,即这个流程本质上是低效且容易出错的。但他坚持认为,这种流程是最佳的,因为它允许企业选择何时将功能部署到生产环境中。此外,他还声称,他在大公司以前的工作中使用了完全相同的流程

我也有很多经验,但我从未见过这样的流程,也从未在书或博客文章中读到过这样的流程

我有两个问题:

  • 这样的流程(在
    开发
    生产
    不断分化的地方)是否确实在大型团队中使用
  • 如果我认为这是次优的,那么说服CTO迁移到更好的流(例如,规范的git流)的最佳方法是什么

  • 在集成和主分支中任意集成或删除要素分支的最佳工作流是:

    (最初于2017年以“”呈现)

    这是一个用于的。
    其特点:

    • 它在每个新的发布周期重置登台/开发/测试分支,使这些分支短暂(即销毁/重新创建)
    • 它将功能分支合并到这些分支(而不是从开发到测试再到登台)

    我遇到了完全相同的问题,在某个时候,处理如此分散的开发/生产分支会变得一团糟

    问题在于业务,它突然决定某个特性不会出现在下一个版本中,或者业务没有花时间测试该特性。这不是任何git流都应该解决的问题

    可能会试图解决这个问题,但它非常复杂:

    Gitworkfow比大多数(可能是所有)其他流更复杂、更难理解。它需要更多地理解git的概念和功能。它通过一个开发团队为复杂的多维产品提供了强大的功能,但在跟踪和理解多个事物的意义上,它确实有更多的“开销”


    因此,我建议只使用哪种强制来释放开发分支中的所有代码,而不是只释放开发分支中的特定特性。如果某个功能还不应该在生产中使用,只需实现一个。

    功能标志是解决此类问题的好方法。开发继续进行,不会受到阻碍,产品团队可以决定何时(以及是否!)打开/关闭功能。这没有帮助,因为我已经提出了建议,并得到了相同的回答:“流程很好,你只是不喜欢它”。我在寻找有力的论据。或者确认我错了,这个流程是好的。听起来你可以继续前进,不用担心。这是其他人的工作,如果他们对此没有异议,就没有理由让它成为你的工作。只是我的意见。不过我同意。任何涉及持续合并冲突的流程都可能是垃圾。因此,假设某个功能被合并到开发中,但最终没有被合并回生产中。那么,developer难道还没有那个不需要的特性吗?我同意你的Git工作流应该被改变+ 1。@ TimiGeeleSein是的,这正是为什么我认为这是一个只会变得更糟的问题。但我不能把这件事告诉CTO。也许是因为英语不是我的第一语言。也许是因为其他原因。