所以我正在从Github中找出最简单的分支/部署策略,至少有一个dev和一个发布(master)分支。 在看到this answer后,我认为这非常接近我们所需要的。除了能够仅部署一些功能的一个大问题。不是一切。
提供的2个选项here不够好。这是一种常见的情况,每次恢复都是非常讨厌的。此外,我已经读到樱桃采摘还有其他问题,特别是因为樱桃挑选提交实际上是副本(这是真的吗?)
现在,我想如果我们开始处理的新功能我们创建了一个分支,并将它们合并到我们选择的dev分支,我们可以将这些分支合并到发布分支(而不是从dev发布分支,我们从功能分支合并到开发和发布,因此我们可以选择要发布的内容),因此我们只能准备好发布所需的更改。我至少可以想到两个可能的问题:
因此,总而言之,我如何保留dev分支,在那里进行一些更改,以后只将一些东西移动到另一个分支?
非常感谢。
答案 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
,也可以合并到dev
或cool_feature
,同样可以将cool_feature
合并到fix_terrible_bug
即使你的同事继续在gsl_matrix_float
工作。当另一个分支合并时,Git会做得很好(虽然当你合并这样的东西时,避免重组,它们最终会让人感到困惑)。
作为旁注,不要担心樱桃选择“复制”的东西。 Git中的每个提交都是根据其内容,父提交,当前时间等构建的包。当你挑选时,你将相同的内容放到新的父提交中,因此提交哈希必然会改变并且它是有效的一个独立于原始的新提交。那很好--Git很擅长工作。除非你提交千兆字节的高清视频,否则你不会注意到任何额外的空间使用,当“原始”提交加入你的樱桃选择路径时,它实际上将是一个无操作并最终获得垃圾收集。