分支:
- dev:我的主分支
- 实验性:4年前从dev分离
- 功能1:从6个月前的实验中分离
现在我需要feature1中的功能,但我不需要实验中的其他功能。如何将提交从feature1分支移动到dev,但不合并它,因为会有很多冲突?feature1实验中有大约400个提交,dev和实验中有大约3000个差异。
一如既往,让我们从可视化情况开始:
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
的父级(不包括)和dev
之上的C
(包括)之间的提交范围。换句话说,提交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
那样多。