由于在我的项目中使用了子模块,我发现自己常常在“(没有分支)”。因为我也在为那些我正在那里提交的子模块添加代码。当我想要推送那些子模块时,我需要在一个分支上。因此我的问题是:
git(命令行)中是否有方法/快捷方式将本地分支设置为当前提交/ HEAD而不绕道而行
git checkout the_branch
git reset --hard <previous commit-ish>
更确切地说,上面“绕道而行”的真正问题是我暂时离开了原来的HEAD和checkout-command。使用git branch -f
命令可以避免这种情况(感谢CharlesB)。
答案 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