假设存在提交A,B,C和D,它们都在master分支中,因此历史记录如下所示。
A -> B -> C -> D -> HEAD.
C和D带来了一些未经充分测试的功能,您需要将它们分成新的分支(首先应该完成此工作),对其进行测试,等等,然后再合并回去。
所以我该如何还原主节点以提交B并将C和D分离到新分支中,从而使分支树看起来像这样?
A -> B -> master's HEAD.
\-> C -> D -> new branch's HEAD.
很多方法。您需要在D
上有一个新的分支标签,并在B
上有一个主分支标签。有注释的方法,或者是稍短的方法:
git branch newbranch
git reset --hard @~2
或通过这种方式将您留在新的分支上,因此,如果您正在从那里工作,那么工作树的搅动就会减少:
git checkout -b newbranch
git branch -f master @~2
一个注释:只有一个HEAD
,它是父级git commit
将使用的。为了清楚起见,分支机构有提示。通常将HEAD
附加到最后签出,提交或重置到的任何对象(即,指向该对象的符号链接),因此当您签出一个分支时,git为此将HEAD
设置为符号引用(别名)分支提示。