获取当前分支名称的最快方法,如果不在分支上,则使用适当的字符串

时间:2019-04-25 12:29:43

标签: git

此刻我使用

git branch | grep \* | cut -d ' ' -f2-

但是执行时间太慢了。

是否有更快的方法来生成相同的输出?

我的意思是相同输出(我没有见过不喜欢的情况),例如头颅脱落

(HEAD detached at SHA)

重新定基

(no branch, rebasing BRANCH)


我已经尝试过

cat .git/HEAD | cut -d '/' -f3

但是我知道有时候,例如如果重新定基,那将行不通。然后,我将不得不检查是否存在.git/REBASE_HEAD?还有从任何子目录中找到.git目录的问题。最后,我不知道这样的解决方案是否会更快,至少(如果我(凭经验))不是我自己编写代码的解决方案。

4 个答案:

答案 0 :(得分:3)

您还可以使用git rev-parse(但不幸的是,对于其他答案,这不能处理进程内变基的情况) < / p>

git rev-parse --abbrev-ref HEAD

rev-parsesymbolic-ref都是管道命令,在执行时间方面可能非常接近。

答案 1 :(得分:2)

您也可以使用git symbolic-ref。但是,请小心,因为重新设置时,此不起作用

summary(glm(cbind(Nsucc, Ntrys-Nsucc) ~ distance, family=binomial))

顺便说一句,这是我知道的简短命令,用于获取此信息(29个字符)

答案 2 :(得分:1)

我很惊讶它这么慢,但是您可以尝试一下。可能同样慢。
git status|head -n1|cut -d ' ' -f4

答案 3 :(得分:1)

除非必须绝对使用git命令,否则您只需从实际的.git文件夹中读取分支名称即可。

cat .git/HEAD | cut -d '/' -f3

,当您不在任何分支中时(这也是其他情况),这会中断,在此期间它将返回您所在的提交的SHA(与其他分支不同)。我想不出其他任何情况,可能会中断。