使用新分支中的最后一次提交启动一个新分支

时间:2014-10-07 14:28:41

标签: git

我目前正在使用这个git树/工作流程

A [master]
 \
  B ------------- D [develop] 
   \             / 
    C1 -- C2 -- C3 -- C4 [feature1]

现在我想为第二个功能创建一个新分支,但是我忘了检查新分支,并且我将新代码提交给Feature1分支。

A [master]
 \
  B ------------- D [develop] 
   \             / 
    C1 -- C2 -- C3 [feature2]
                 \
                  C4 [feature2]

所以我现在要做的是从功能1分支中删除C4并将其添加到仍然不存在的功能2分支。 C4还没有被推到遥控器,项目的其余部分是。

1 个答案:

答案 0 :(得分:1)

执行以下操作:

  1. 确保您拥有干净的工作状态(如果需要,可以创建一个藏匿处)。在这个阶段,你的回购仍然是这样的:

    A [master]
     \
      B ------------- D [develop] 
       \             / 
        C1 -- C2 -- C3 
                     \
                      C4 [feature1]
    
  2. 创建并签出名为feature2的分支,该分支指向与feature1相同的提交:

    git checkout -b feature2 feature1
    

    您的回购将如下所示:

    A [master]
     \
      B ------------- D [develop] 
       \             / 
        C1 -- C2 -- C3
                     \
                      C4 [HEAD=feature2,feature1]
    
  3. 通过一次提交重置feature1分支:

    git checkout feature1
    git reset --hard HEAD^
    

    您的回购将如下所示:

    A [master]
     \
      B ------------- D [develop] 
       \             / 
        C1 -- C2 -- C3 [HEAD=feature1]
                     \
                      C4 [feature2]
    
  4. 如果你想继续在feature2分支上工作,请查看它(如果你创建了一个,还要弹出你的上一个藏匿处):

    git checkout feature2
    

    您的回购将如下所示:

    A [master]
     \
      B ------------- D [develop] 
       \             / 
        C1 -- C2 -- C3 [feature1]
                     \
                      C4 [HEAD=feature2]