Git:将分支设置为当前ref

时间:2011-09-28 08:45:06

标签: git

由于在我的项目中使用了子模块,我发现自己常常在“(没有分支)”。因为我也在为那些我正在那里提交的子模块添加代码。当我想要推送那些子模块时,我需要在一个分支上。因此我的问题是:

git(命令行)中是否有方法/快捷方式将本地分支设置为当前提交/ HEAD而不绕道而行

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

更确切地说,上面“绕道而行”的真正问题是我暂时离开了原来的HEAD和checkout-command。使用git branch -f命令可以避免这种情况(感谢CharlesB)。

2 个答案:

答案 0 :(得分:56)

使用-B签出分支:这会将分支重置为HEAD,这是当前的参考。

git checkout -B <branch> 

来自docs

  

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

的交易等价物
$ git branch -f <branch> [<start point>]
$ git checkout <branch>
     

也就是说,除非&#34; git,否则不会重置/创建分支   结帐&#34;是成功的。

答案 1 :(得分:20)

git checkout -B the_branch HEAD

这将在提交HEAD处签出the_branch,即使the_branch之前指向其他位置。它是在最后几个git版本中添加的,所以你可能没有它。替代路线为git branch -D the_branch && git checkout -b the_branch