如何将分支中的提交移动到GIT中的另一个新分支?

时间:2014-09-24 18:17:34

标签: git git-branch

我为我的工作开发 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但是想确保最好的方法。

1 个答案:

答案 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-选择两个感兴趣的提交(34):

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]

你会处于干净的工作状态。