我目前正在使用这个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还没有被推到遥控器,项目的其余部分是。
答案 0 :(得分:1)
执行以下操作:
确保您拥有干净的工作状态(如果需要,可以创建一个藏匿处)。在这个阶段,你的回购仍然是这样的:
A [master]
\
B ------------- D [develop]
\ /
C1 -- C2 -- C3
\
C4 [feature1]
创建并签出名为feature2
的分支,该分支指向与feature1
相同的提交:
git checkout -b feature2 feature1
您的回购将如下所示:
A [master]
\
B ------------- D [develop]
\ /
C1 -- C2 -- C3
\
C4 [HEAD=feature2,feature1]
通过一次提交重置feature1
分支:
git checkout feature1
git reset --hard HEAD^
您的回购将如下所示:
A [master]
\
B ------------- D [develop]
\ /
C1 -- C2 -- C3 [HEAD=feature1]
\
C4 [feature2]
如果你想继续在feature2
分支上工作,请查看它(如果你创建了一个,还要弹出你的上一个藏匿处):
git checkout feature2
您的回购将如下所示:
A [master]
\
B ------------- D [develop]
\ /
C1 -- C2 -- C3 [feature1]
\
C4 [HEAD=feature2]