Git:将分支设置为当前

由于我的项目中使用了子模块,所以我经常发现自己位于“(无分支)”上。 当我还在这些子模块中添加代码时,我在其中提交了这些代码。 然后,当我想推送这些子模块时,我当然需要在一个分支上。 因此,我的问题是:

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

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

更准确地说,上述“绕行”的真正问题是我暂时将原始HEAD留给checkout-command。 使用git branch -f命令可以避免这种情况(感谢CharlesB)。

Patrick B. asked 2020-08-09T21:38:20Z
2个解决方案
60 votes

使用300431957695293131328检出分支:这会将分支重置为HEAD,即当前引用。

git checkout -B <branch> 

从文档:

如果给定-B,则创建它(如果不存在); 否则,将被重置。 这是交易的等价物

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

也就是说,除非“ git” 结帐”成功。

CharlesB answered 2020-08-09T21:38:39Z
20 votes
git checkout -B the_branch HEAD

即使the_branch之前指向其他地方,这也会在提交HEAD处签出the_branch。 它是在最近的几个git版本之一中添加的,因此您可能没有可用的版本。 替代路线为git branch -D the_branch && git checkout -b the_branch

knittl answered 2020-08-09T21:38:59Z
translate from https://stackoverflow.com:/questions/7580542/git-set-branch-to-current-ref