我希望除非HEAD指向主机,否则命令将失败(代码1)。
这类作品:
git diff master --quiet || (echo 'Not master' && false)
但是它太严格了–如果工作树中有任何未提交的更改,它也会失败。
我怎么能断言HEAD
指向master
,而不考虑工作树中任何未进行的或未提交的更改?
答案 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"