【问题标题】:How to add features to an older version and merge them with the development version in Git?如何向旧版本添加功能并将它们与 Git 中的开发版本合并?
【发布时间】:2026-02-01 12:40:01
【问题描述】:

目前我只有一个 master 分支,它代表了项目的当前开发状态​​。我想在发布版本中添加两个功能(这是主分支上的几个提交),发布它,然后仅将功能中的更改合并到当前的开发版本(主分支)中。我的想法如下:

  1. 将旧提交从主分支签出到单独的发布分支。
  2. 从 1 中创建的发布分支创建功能分支。
  3. 添加功能,将它们提交到功能分支。
  4. 仅将功能分支中的更改应用到开发分支。
  5. 将功能分支与发布分支合并并删除。

假设当前发布版本是 1.5,我会在发布分支中创建 1.6 版本,添加功能后不要触摸它。只有更改,主要是单独类形式的附加文件,才会合并到 2.0 版的开发分支中。我想这样做,因为 1.5 和 2.0 之间的代码库已经发生了根本性的变化,而且它们在这一点上基本上是不可合并的。

这是实现我的目标的正确和最简单的方法吗?完成所有步骤需要哪些特定命令/ git 功能?我已经考虑过在我们未来的开发中使用git flow 来简化这样的用例,但我不确定它是否对于我们的简单需求来说不是太复杂和多余。

【问题讨论】:

    标签: git version-control merge branch


    【解决方案1】:

    最简单的方法应该是使用cherry-pick:

    1. 查看发布分支
    2. 添加功能并提交
    3. 检查 master 分支并挑选想要的提交

    您可以挑选单个提交(即git cherry-pick <commit>)或一系列提交(即git cherry-pick <commit 1>..<commit 2>

    git ready - pick out individual commits

    【讨论】:

    • 我已经读过好几次了,樱桃采摘会弄乱存储库的历史并产生不必要的冲突。我需要注意什么?有没有一种更简单的方法可以从一个分支中选择所有提交,而不是分析日志并手动选择提交范围?