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

时间:2015-05-13 15:37:42

标签: git github branch

所以我正在从Github中找出最简单的分支/部署策略,至少有一个dev和一个发布(master)分支。 在看到this answer后,我认为这非常接近我们所需要的。除了能够仅部署一些功能的一个大问题。不是一切。

提供的2个选项here不够好。这是一种常见的情况,每次恢复都是非常讨厌的。此外,我已经读到樱桃采摘还有其他问题,特别是因为樱桃挑选提交实际上是副本(这是真的吗?)

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

  • 功能分支已合并到dev和release中,这会让我以后遇到麻烦吗?
  • 会起作用吗?因为我的功能分支可以基于其他功能分支中的更改(它们将基于开发),当我将功能合并到dev时,我必须先拉动,从而添加其他功能。

因此,总而言之,我如何保留dev分支,在那里进行一些更改,以后只将一些东西移动到另一个分支?

非常感谢。

1 个答案:

答案 0 :(得分:4)

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

  • 将所有分支基于master。这完成了两件事:
    • 您的分支机构基于生产,因此它已准备就绪
    • 您的dev分支中没有尚未准备好发布的内容
  • 当您想要发布分支时:
    • branch合并到master
    • 部署
    • master合并到dev以使其保持最新状态。否则dev中的人会越来越远离生产中的东西。
  • 当您的分支完成但您不想发布时,请合并到dev
  • dev等待的所有内容都准备好了
    • dev合并到master
    • 部署

您遇到的问题是,您正在使用cool_feature并且您的同事已经分支fix_terrible_bug您认识到cool_feature需要。在这种情况下,将fix_terrible_bug直接合并到cool_feature并继续。 fix_terrible_bug完成后,即使您尚未使用master,也可以合并到devcool_feature,同样可以将cool_feature合并到fix_terrible_bug即使你的同事继续在gsl_matrix_float工作。当另一个分支合并时,Git会做得很好(虽然当你合并这样的东西时,避免重组,它们最终会让人感到困惑)。

作为旁注,不要担心樱桃选择“复制”的东西。 Git中的每个提交都是根据其内容,父提交,当前时间等构建的包。当你挑选时,你将相同的内容放到新的父提交中,因此提交哈希必然会改变并且它是有效的一个独立于原始的新提交。那很好--Git很擅长工作。除非你提交千兆字节的高清视频,否则你不会注意到任何额外的空间使用,当“原始”提交加入你的樱桃选择路径时,它实际上将是一个无操作并最终获得垃圾收集。