gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 13:37:57 26 4
gpt4 key购买 nike

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

提供的 2 个选项 here只是不够好。这是一个常见的场景,每次都还原是很讨厌的。另外,我读到 cherry picking 还有其他问题,特别是因为 cherry picked 提交实际上是副本(这是真的吗?)

现在,我在想,如果我们开始研究新功能,我们创建一个分支,并将它们 merge 到我们选择的开发分支,我们可以将这些分支 merge 到发布分支(而不是从 merge dev 到 release 分支,我们从 feature 分支 merge 到 dev 和 release,这样我们就可以选择要发布的内容) 所以我们只会准备好需要的更改以供发布。我至少可以想到两个可能的问题:

  • feature 分支已经 merge 到 dev 和 release,这会不会给我带来麻烦?
  • 它会起作用吗?因为我的功能分支可能基于其他功能分支中所做的更改(它们将基于开发),所以当我将功能 merge 到开发时,我必须先 pull ,从而添加其他功能。

所以,总而言之,我怎样才能保留一个开发分支,在那里进行一些更改,然后只将一些东西移动到另一个分支?

非常感谢。

最佳答案

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

  • 将你所有的分支建立在 master 之上。这完成了两件事:
    • 您的分支机构基于生产,因此它已准备好走出去
    • 您的 dev 分支中没有尚未准备好发布的东西
  • 当你想发布一个分支时:
    • merge branchmaster
    • 部署
    • master merge 到 dev 以保持最新。否则,dev 中的人员离生产中的东西越来越远。
  • 当你的分支完成但你不想发布时, merge 到 dev
  • 当所有等待在 dev 中的东西都准备好出去时
    • merge devmaster
    • 部署

您将遇到的情况是,您正在处理 cool_feature,而您的同事已经分支了 fix_terrible_bug,您意识到 cool_feature 需要。在这种情况下,将 fix_terrible_bug 直接 merge 到 cool_feature 中并继续。当 fix_terrible_bug 完成后,它可以 merge 到 masterdev 中,即使您还没有完成 cool_feature ,同样,您可以将 cool_feature merge 到其中一个,即使您的同事正在继续处理 fix_terrible_bug。当其他分支 merge 时,Git 会做得很好(尽管当您像这样 merge 很多东西时,请避免 rebase ,它们最终会造成困惑)。


作为旁注,不要担心精心挑选的“复制”内容。 Git 中的每个提交都是一个由其内容、其父提交、当前时间等构建的包。当您挑选时,您将相同的内容放入新的父提交中,因此提交哈希必然会发生变化并且它是有效的独立于原始提交的新提交。这很好——Git 擅长它的工作。除非您提交千兆字节的高清视频,否则您不会注意到使用了任何额外的空间,并且当“原始”提交与您的 cherry-pick 连接路径时,它实际上是一个无操作并最终得到垃圾收集到。

关于Github 仅在开发分支中部署特定功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30219460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com