【问题标题】: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 个提交,dev 和 experimental 有大约 3000 个提交。
【问题讨论】:
标签:
git
version-control
git-flow
【解决方案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 之上的提交范围。换句话说,提交A、B 和C:
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)
请注意,您仍然必须解决 A、B 和 C 和 dev 中包含的更改之间的任何冲突。但是,它不会像您尝试将 feature1 合并到 dev 一样多。