2011-09-28 66 views
30

由于在我的项目中使用了子模块,我经常在“(不分支)”上找到自己。正如我还将代码添加到我在那里承诺的子模块中。当我然后想要推动这些子模块时,我需要成为一个分支。因此,我的问题:Git:将分支设置为当前参考

是否有混帐(命令行)的方式/快捷方式到本地分支设置为当前提交/ HEAD无

git checkout the_branch 
git reset --hard <previous commit-ish> 

的弯路更确切地说,我的真正的问题与上述“绕道”是我暂时离开原来的头与结帐命令。这可以通过git branch -f命令来避免(感谢CharlesB)。

回答

39

签出与-B分支:这将重置分支到HEAD,这是当前裁判。

git checkout -B <branch> 

docs

如果-B给出,如果不存在则创建; 否则,它被重置。这是

$ git branch -f <branch> [<start point>] 
$ git checkout <branch> 

事务相当于也就是说,分支不复位/创建除非“混帐 结账”是成功的。

+3

我现在意识到“branch -f”命令就是我正在寻找的东西,因为我真正的问题是我不想“离开”我目前正在使用的提交。谢谢。 –

+1

官方文档链接:https://git-scm.com/docs/git-checkout#git-checkout-emgitcheckoutem-b-Bltnewbranchgtltstartpointgt –

16
git checkout -B the_branch HEAD 

这将签the_branch在提交HEAD,即使the_branch指出别的地方了。它是在最近的几个git发行版中添加的,所以你可能没有它。替代路线将是git branch -D the_branch && git checkout -b the_branch

+0

我使用的是git 1.7.0.4版,并且checkout -B尚不存在。但很高兴看到它将在未来。 –