Git 以编程方式检查头部是否分离?
我想知道我在脚本中是否处于“头部分离”状态 目前我解析的是Git 以编程方式检查头部是否分离?,git,git-detached-head,Git,Git Detached Head,我想知道我在脚本中是否处于“头部分离”状态 目前我解析的是git status的输出,但我不喜欢这样做,因为我听说解析git输出是一种不好的做法,它是为人类设计的,我想要一个程序友好的界面来告诉我头部是否被分离。我也不想手动查看.git/HEAD或解析git description或git branch 有什么想法吗?以编程方式,您需要为Git协议创建一个包装器 例如,通过您能够找到已拆下或未拆下的回购头,最简单的命令可能是: $ git symbolic-ref -q HEAD 并检查退出状
git status
的输出,但我不喜欢这样做,因为我听说解析git输出是一种不好的做法,它是为人类设计的,我想要一个程序友好的界面来告诉我头部是否被分离。我也不想手动查看.git/HEAD
或解析git description
或git branch
有什么想法吗?以编程方式,您需要为Git协议创建一个包装器
例如,通过您能够找到已拆下或未拆下的回购头,最简单的命令可能是:
$ git symbolic-ref -q HEAD
并检查退出状态:0表示正常;1是分离的
从git symbolic ref
的文档中:
-q, --quiet
Do not issue an error message if the <name> is not a symbolic ref
but a detached HEAD; instead exit with non-zero status silently.
-q,--quiet
如果不是符号引用,则不要发出错误消息
而是一个超然的头脑;而是以非零状态静默退出。
使用git分支
查找分离的头部
$ git branch -q
* (HEAD detached at c61a6d2)
master
我没有提到我在用什么语言编程。它可能是Bash,其中唯一的接口是
git
二进制文件。这很好-一旦你知道如何在Bash中实现它,你就可以用任何语言实现它-通过调用git
二进制。@iBuggit symbolic ref HEAD
可能会帮助你,只需通过grep
命令指示致命错误。你可以尝试git rev parse--symbolical full name HEAD
,如果它输出HEAD,您处于分离模式,如果它输出一个分支名称,那么您就在该分支上。git rev parse--abbrev ref HEAD
将为您提供一个分支名称,如果您在分支上,否则将为您提供分离的头hashGreat解决方案。我就拿这个。你确定这个输出已经准备好使用了吗(即文本解析)?确定可以在中使用它。git能改变输出吗?是的,但是位腐蚀的脆弱性在您编写的任何代码中都是常见的。如果您担心,请编写一个单元测试。。。