在尝试设置我的新鱼壳提示时,我最终测试了获取分支名称的方法,并测试了我是否在 git 存储库上。我发现(1) git rev-parse --abbrev-ref HEAD
, (2) git symbolic-ref HEAD | sed 's/refs\/heads\///'
和(3) git describe --contains --all HEAD
可以很好地解决问题。
我很好奇,因为我喜欢(1)的简单性,但是在一个新的和未受影响的(只是git init
ed)存储库上,它给了我一个“致命的:”错误,而(2)按预期工作,也就是说,给了我一个默认主作为输出。问题是,即使出现“致命:”错误,返回码也是 0。这是预期的行为吗?
为了测试我是否在 git 存储库中,我最终只是测试当前目录是否有一个“.git”文件夹:test -d ".git"
. 基本的解决方案,但它有效,而且似乎比使用任何 git 命令都要快。
所以,我的问题是:
^ /dev/null
(对于那些不知道的人,^
与 相同2>
),我不会得到错误,但它会说HEAD
而不是 master,但如果我cat .git/HEAD
,我得到:ref: refs/heads/master
。它真的应该说什么?随着master
我只是无知和挑剔,因为它应该不是说HEAD
?我的意思是在刚刚git …