如何在git中合并某些分支/部分提交?

时间:2016-03-24 04:34:30

标签: git version-control merge branch

我有分支alphabetamaster。我还有分支feature_afeature_bfeature_cfeature_d。 然后我:

  1. feature_a合并到alpha
  2. feature_b合并到alpha
  3. feature_c合并到alpha
  4. feature_d合并到alpha
  5. feature_b feature_d存在问题(或者他们错过了截止日期并且仍处于测试阶段),但其他人已准备好前往{{} 1}}分支。

    我怎么能只合并选择"分支"从beta进入beta分支,以便只合并alphafeature_a?历史和祖先是否保持完整(假设特征分支被修剪或删除)?

    我在feature_cgit merge beta feature_c...alpha的范围内猜测某些事情(这些命令不会起作用,但这是我所尝试的理论背后的理论到目前为止。)

1 个答案:

答案 0 :(得分:1)

如果您只想合并某些分支,则只能合并那些分支:

git merge beta feature_a feature_a

现在,如果您只想在开始发布时的状态下合并那些分支(即:将它们合并到alpha中),那么,您可以在此时标记它们合并,标签为feature_a_release-n等......;这样就可以合并到beta中:

git merge beta feature_a_release-n feature_b_release-n

我们还可以考虑一种替代方案,因为在继续测试之前,您可能理所当然地希望在它们之间实际合并这些功能以便一起测试它们。在这种情况下,您可能希望每个版本执行一个分支,而不是alpha分支,例如:alpha-release-n。如果您在创建此版本分支后发现功能分支出现问题,则可以创建一个新版本,例如alpha-release-n.2,它不包含不需要的分支。

最终主观性:这个工作流程,每个团队都有一个功能分支,是我公司几年前使用的工作流程。从那以后,R& D增加了一倍以上,我们在这个工作流程中发现了一些缺陷。 (例如,因为后期整合可能会在几天后发现冲突,这是一个相当晚的反馈)。

在没有深入细节的情况下,在我们的代码库中投入大量精力建立可靠的非回归测试之后,我们现在只提交到master,我们认为它应该可以投入生产在任何时候。