git将告诉签出的分支
编写git脚本时,我需要找出签出的分支名称。到目前为止,似乎唯一“可靠”的方法是使用git将告诉签出的分支,git,Git,编写git脚本时,我需要找出签出的分支名称。到目前为止,似乎唯一“可靠”的方法是使用git分支| sed-n'/^\*/s///p'。(因为.gitconfig中的color.branch或column.branch之类的东西而害怕引用;它根本不可靠。)我找到的唯一其他东西是git name rev,但它似乎返回指向头部的第一个(按名称排序)分支: > git checkout master > git checkout -b another > git checkout ma
git分支| sed-n'/^\*/s///p'
。(因为.gitconfig中的color.branch
或column.branch
之类的东西而害怕引用;它根本不可靠。)我找到的唯一其他东西是git name rev
,但它似乎返回指向头部的第一个(按名称排序)分支:
> git checkout master
> git checkout -b another
> git checkout master
> git name-rev HEAD
HEAD another
是否有比
sed-n'\\\\\^ref:refs/heads/#s\35;###p.git/HEAD
更好的方法来计算签出的分支?只需输出您正在使用的分支:
git rev-parse --symbolic-full-name --abbrev-ref HEAD
如果您有多个分支,并且如果您不在任何分支上,它只会给您
HEAD
这里有一个我在几个脚本中使用的git
调用,它会返回refs/heads/branchname
,或者如果您不在分支上,它给了你超脱的头上的SHA:
cur_branch=$(git symbolic-ref HEAD 2>> /dev/null || git rev-parse HEAD)
删除
refs/heads/
前缀应该非常简单,如果您需要它…似乎类似于--short
处理前缀,并且-q
抑制stderr上的输出。git symbolic ref-q--short HEAD
对于懒惰的人:)这两个和twalberg的答案对于前面提到的问题都是正确的,我对它们都投了赞成票。如果有可能接受多个答案,我会在这种情况下这样做git symbolic ref
won,因为我更喜欢分离头部的非零退出代码。未说明的要求,我知道。