2014-09-24 106 views
4

我已经发展的Git分支对我的工作,我创建了一个名为特征1并取得承诺1,2,3和4如何将分支中的提交移动到GIT中的另一个新分支?

我需要摆脱特征1提交3,4新的分支分支到新创建的分支特征2

的承诺3,4-应从特征1被删除,并加入到一个新的分支特点2,所以最后的结果应该是这样的特征1 1,和2个分支并特征2 3和4.

请注意,此刻我有开发功能1分支机构。 功能2尚未添加。

实现该目标的最佳方法是什么?我尝试了git樱桃选择,但要确保最好的方式来做到这一点。

+0

你打算在哪里创建'branch2'?在哪个提交? – Jubobs 2014-09-24 18:31:08

+0

我想从* develop *分支创建branch2(* feature2 *)并添加来自* feature1 *的提交3,4。 – 2014-09-24 18:32:33

回答

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] 

摘樱桃的利息(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] 

,你会在清洁的工作状态。

+1

谢谢@Jubobs,现在似乎在工作。干杯。 – 2014-09-24 19:03:14

+1

很好解释。 – pjmorse 2014-09-25 12:46:17

相关问题