我为我的工作开发 git分支,我创建了一个名为 feature1 的新分支,并提交了1,2,3和4。
我需要将提交3,4从 feature1 分支移动到新创建的分支 feature2 。
应该从 feature1 中删除提交3,4并添加到新的分支 feature2 ,因此最终结果应该类似于 feature1 带有1和2个分支, feature2 带3和4。
请注意,目前我已经开发和 feature1 分支机构。 feature2 尚未添加。
实现这一目标的最佳方法是什么?我试过git cherry-pick但是想确保最好的方法。
答案 0 :(得分:6)
如果我理解你的描述正确,你的回购目前看起来像这样,
... -- o [develop]
\
1 -- 2 -- 3 -- 4 [feature1]
你希望它看起来像那样
3'-- 4'[feature2]
/
... -- o [develop]
\
1 -- 2 [feature1]
正确?如果是,请执行以下操作。
首先,确保您处于干净的工作状态。然后,创建并签出一个名为feature2
的分支,该分支指向与develop
相同的提交:
git checkout -b feature2 develop
您的回购将如下所示。
... -- o [HEAD=feature2,develop]
\
1 -- 2 -- 3 -- 4 [feature1]
Cherry-选择两个感兴趣的提交(3
和4
):
git cherry-pick <commit-ID-of-3> <commit-ID-of-4>
之后,您的仓库将如下所示。
3'-- 4'[HEAD=feature2]
/
... -- o [develop]
\
1 -- 2 -- 3 -- 4 [feature1]
最后,检查一下你的feature1
分支并将其重置为两次提交:
git checkout feature1
git reset --hard HEAD~2
您的回购将按照需要结束,
3'-- 4'[feature2]
/
... -- o [develop]
\
1 -- 2 [HEAD=feature1]
你会处于干净的工作状态。