Github仅在开发分支中部署特定功能

Github仅在开发分支中部署特定功能,git,github,branch,Git,Github,Branch,因此,我正在从Github中找出最简单的分支/部署策略,它至少有一个dev和一个release(master)分支。 我认为这已经接近我们需要的了。除了一个大问题,就是只能部署一些功能。不是所有的 这两个选项都不够好。这是一种常见的情况,每次恢复都是非常讨厌的。此外,我还读到了cherry picking还有其他问题,特别是因为cherry picking提交实际上是副本(这是真的吗?) 现在,我在想,如果我们开始开发的新功能创建一个分支,并将它们合并到我们选择的开发分支,我们可以将这些分支合并

因此,我正在从Github中找出最简单的分支/部署策略,它至少有一个dev和一个release(master)分支。 我认为这已经接近我们需要的了。除了一个大问题,就是只能部署一些功能。不是所有的

这两个选项都不够好。这是一种常见的情况,每次恢复都是非常讨厌的。此外,我还读到了cherry picking还有其他问题,特别是因为cherry picking提交实际上是副本(这是真的吗?)

现在,我在想,如果我们开始开发的新功能创建一个分支,并将它们合并到我们选择的开发分支,我们可以将这些分支合并到发布分支(而不是从开发分支合并到发布分支,我们将从功能分支合并到开发和发布,这样我们就可以选择发布什么因此,我们只准备好发布所需的更改。我至少可以想到两个可能的问题:

  • 功能分支已经合并到dev和release中,这会给我带来麻烦吗
  • 行吗?因为当我将功能合并到dev时,我的功能分支可以基于在其他功能分支中所做的更改(它们将基于dev),所以我必须首先提取,从而在中添加其他功能
所以,总而言之,我怎样才能保留一个开发分支,将一些更改放在那里,然后只将一些内容移动到另一个分支


非常感谢

你绝对可以做到这一点。以下是我的建议:

  • 将所有分支从
    master
    中删除。这可以完成两件事:
    • 你们的分公司是以生产为基础的,所以准备好了
    • 您在
      dev
      的分支中没有尚未准备好发布的东西
  • 要释放分支时,请执行以下操作:
    • 合并
      分支
      主分支
    • 部署
    • master
      合并到
      dev
      以使其保持最新。否则,
      dev
      中的人们会越来越远离生产中的产品
  • 当您的分支完成但不想释放时,合并到
    dev
  • 当等待在
    dev
    中的一切都准备就绪时
    • dev
      合并到
      master
    • 部署
你会遇到这样的情况:你正在使用
cool\u功能
,而你的同事已经将你意识到
cool\u功能
需要的
fix\u可怕的错误
。在这种情况下,将
fix\u可怕的错误
直接合并到
cool\u功能中
并继续。当
修复可怕的bug
完成后,它可以合并到
主程序
开发程序
中,即使你还没有完成
酷功能
,同样,你也可以将
酷功能
合并到这两个程序中,即使你的同事正在继续处理
修复可怕的bug
。当另一个分支合并时,Git会做得很好(尽管当你像这样进行合并时,避免使用回扣,它们最终会让事情变得混乱)



顺便说一句,不要担心“复制”东西。Git中的每个提交都是一个由其内容、其父提交、当前时间等构建的捆绑包。当您选择时,您将相同的内容放在新的父提交上,因此提交哈希必然会发生变化,并且它实际上是一个独立于原始提交的新提交。那很好-Git很擅长它的工作。除非您正在提交千兆字节的高清视频,否则您不会注意到使用了任何额外的空间,而且当“原始”提交将路径与您的樱桃选择连接在一起时,它将实际上是一个不可操作的操作,最终会被垃圾回收。

谢谢。从master分支似乎是合理的。但您提到:“当dev中等待的一切都准备就绪时”,这难道不会给我留下与我开始时相同的问题吗?很多时候情况并非如此。很多时候,我们在dev中有几个特性,只有少数可以使用。也许这就是我的答案,也许樱桃采摘是唯一的方法。啊,那么在你完成一个分支时,你是否可以决定它是否应该部署?那很好。将它们合并到dev中,这样每个人都可以使用它们,但保留分支,以便在准备就绪时也可以将其合并到master中。如果需要一起部署,您可以将多个分支合并到master中,如果它们也合并到dev中也没有问题。对于大型事务,为每个人创建一个发布分支,然后将其合并到master/dev/anywhere中。请记住,分支很便宜,master/dev也不是特别的,您可以按自己喜欢的方式雕刻Git树。我会试试看。当我将dev合并到master中时,git会“知道”分支更改已经合并了吗?我相信从“准备发布”分支进行分支几乎就是解决方案。唯一悬而未决的问题是,任何我合并到开发中的东西都需要我去拉,从而从dev中的其他特性中添加更改。因此,仅仅把它放在dev中,我就被迫更改特性分支。不完全是这样。当您拉取时,dev将更新,但您已经创建的分支将保持原样。要将dev上的更改添加到分支中,您必须显式地将dev合并到分支中。