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

Git 使用新分支中的最后一次提交启动新分支,git,Git,我目前正在使用此git树/工作流 A [master] \ B ------------- D [develop] \ / C1 -- C2 -- C3 -- C4 [feature1] 现在我想为第二个特性创建一个新的分支,但是我忘记签出新的分支,我向Feature1分支提交了新代码 A [master] \ B ------------- D [develop] \ / C1 -- C2 --

我目前正在使用此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尚未推送到远程,项目的其余部分已推送到远程。

执行以下操作:

  • 确保你有一个干净的工作状态(如果需要,创建一个储藏室)。在这个阶段,您的回购协议仍然是这样的:

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

    git checkout -b feature2 feature1
    
    您的回购协议将如下所示:

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

    git checkout feature1
    git reset --hard HEAD^
    
    您的回购协议将如下所示:

    A [master]
     \
      B ------------- D [develop] 
       \             / 
        C1 -- C2 -- C3 
                     \
                      C4 [feature1]
    
    A [master]
     \
      B ------------- D [develop] 
       \             / 
        C1 -- C2 -- C3
                     \
                      C4 [HEAD=feature2,feature1]
    
    A [master]
     \
      B ------------- D [develop] 
       \             / 
        C1 -- C2 -- C3 [HEAD=feature1]
                     \
                      C4 [feature2]
    
    A [master]
     \
      B ------------- D [develop] 
       \             / 
        C1 -- C2 -- C3 [feature1]
                     \
                      C4 [HEAD=feature2]
    
  • 如果您想继续处理
    功能2
    分支,请将其签出(如果您创建了一个分支,还可以弹出最后一个分支):

    您的回购协议将如下所示:

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

  • 您的ASCII图形不清楚/不明确。请阅读顶部的备注,并更正您的图表,以便我们准确知道您的分支指向何处。只有这样,这里的人才能帮助你。