Git在分支之间合并的问题

时间:2018-10-30 18:24:54

标签: git merge git-merge

我们正在一个单独的分支中开发多个功能,就像一个分支中的每个功能一样,然后将它们合并到开发分支中以进行测试。我们每周都有一个发布日,因此仅向master分支发布一些功能。我们如何才能只选择那些要合并为母版的少数功能,而又不获取尚未准备发布的其他功能的代码?

3 个答案:

答案 0 :(得分:0)

使用Git可以执行多种操作,但是一种方法是仅将您想要的功能cherry-pick放入发布分支中(从您的描述中看来master)。为此,我建议您将所有功能部件/修复程序预先压缩/合并到功能部件分支中,以便更轻松地选择要选择的哈希值。

在另一个问题中查看更多详细信息: What does cherry-picking a commit with git mean?

答案 1 :(得分:0)

此问题至少有两个选择:

选项1-合并功能

将功能分别直接合并到母版中(合并到母版时忽略开发)。无论您采用何种处理方式,这种方法都应该起作用。但是,您冒着开发“超前”掌握并包含未经验证的更改的风险。您可以通过恢复开发中失败的更改或在开发必须达到发行价值的冻结期来缓解这种情况。

正如mjuarez所指出的那样,您也可以使用cherry-pick达到类似的结果-但前提是您的功能只能局限在单个提交中。

选项2-合并序列化功能

如果您的功能按顺序进行验证或接受(即按合并后的顺序进行开发),则可以合并以控制来自包含所需更改的developer分支中的特定提交。

例如,如果开发包含:

  • 具有aaa哈希值(最旧)的功能a
  • 具有哈希bbb的功能b
  • 具有ccc哈希功能(最新)的功能c =开发HEAD

...并且您只想验证/升级功能a和b以便发布到master,然后可以将commit bbb合并到master。

这样做的最大好处是,您不必冒险在开发中堆积未经验证的变更。

其他

除了这些之外,您可能还希望完全考虑其他分支方法。

https://nvie.com/posts/a-successful-git-branching-model/

https://git-scm.com/book/en/v2/Git-Branching-Branching-Workflows

答案 2 :(得分:0)

这是我们团队中采取的一种方法。请查看这是否符合您的要求。合并功能以进行开发和质量检查后,我们将在Develop中创建一个发布分支(Release_XXX)。该代码从此发行分支迁移到生产。生产迁移完成后,我们仅将代码从此发行分支迁移到master,这样可以确保您仅将经过测试的功能代码迁移到master。