如何将一个分支合并到一个变化很大并且几年没有合并的分支

Posted

技术标签:

【中文标题】如何将一个分支合并到一个变化很大并且几年没有合并的分支【英文标题】:how to merge a branch to a branch that changed a lot and were not merge for a couple years 【发布时间】:2021-12-05 09:47:24 【问题描述】:

分支机构:

dev: 我的主要分支 实验性: 4 年前从 dev 中分离出来。 feature1: 从 6 个月前的实验中分离出来

现在我需要 feature1 的功能,但我不需要其他实验功能。如何将提交从 feature1 分支移动到 dev 但不合并它,会导致很多冲突? feature1 实验性的提交大约有 400 个提交,devexperimental 有大约 3000 个提交。

【问题讨论】:

【参考方案1】:

和往常一样,让我们​​从可视化情况开始:

o---o---o---o---o---o---o---o---o---o---o---o---o---o (dev)
         \
          o---o---o---o---o---o---o---o (experimental)
                           \
                            A---B---C (feature1)

将更改从feature1 带入dev 的最简单方法是使用cherry-pick 命令:

git switch dev
git cherry-pick A^..C

这将应用A(不包括)的父级和C(包括)在dev 之上的提交范围。换句话说,提交ABC

o---o---o---o---o---o---o---o---o---o---o---o---o---o---A'---B'---C' (dev)
         \
          o---o---o---o---o---o---o---o (experimental)
                           \
                            A---B---C (feature1)

请注意,您仍然必须解决 ABCdev 中包含的更改之间的任何冲突。但是,它不会像您尝试将 feature1 合并到 dev 一样多。

【讨论】:

以上是关于如何将一个分支合并到一个变化很大并且几年没有合并的分支的主要内容,如果未能解决你的问题,请参考以下文章

功能分支合并到 Master 后发生变化

如何将某一个分支的部分代码合并到另外一个分支上面

我如何合并从dev到开始然后生产的git分支

Git工作流程和rebase与合并问题

如何限制将特定分支合并到 Gitlab 中的其他分支?

XCode 5 和“合并到分支”