断言当前HEAD指向主机的命令?

时间:2018-08-07 11:12:04

标签: git

我希望除非HEAD指向主机,否则命令将失败(代码1)。

这类作品:

git diff master --quiet || (echo 'Not master' && false)

但是它太严格了–如果工作树中有任何未提交的更改,它也会失败。

我怎么能断言HEAD指向master,而不考虑工作树中任何未进行的或未提交的更改?

3 个答案:

答案 0 :(得分:4)

考虑到HEAD可以直接指向提交(分离的head)或指向与master尖端上的commit内容相匹配的某个分支,因此使用diff比较它并不是100%准确的。另一方面,HEAD只是一个包含符号引用according to docs的文件,可以直接进行比较。

var k = JSON.parse(JSON.stringify( this.allFruits, ["HID","CD","DSC"] ,4));

test "$(cat "$(git rev-parse --git-path HEAD)")" == "ref: refs/heads/master"

答案 1 :(得分:1)

您可以与HEAD进行比较:

git diff HEAD master --quiet || (echo 'Not master' && false)

如果要允许空提交:

[ $(git show --oneline HEAD..master master..HEAD | wc -l) -eq 0] || (echo 'Not master' && false)

或者:

[ "$(git rev-parse HEAD)" = "$(git rev-parse master)" ] || (echo 'Not master' && false)

答案 2 :(得分:1)

检查此命令的退出代码:

git branch | grep "* master"