Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 以编程方式检查头部是否分离?_Git_Git Detached Head - Fatal编程技术网

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
二进制。@iBug
git symbolic ref HEAD
可能会帮助你,只需通过
grep
命令指示致命错误。你可以尝试
git rev parse--symbolical full name HEAD
,如果它输出HEAD,您处于分离模式,如果它输出一个分支名称,那么您就在该分支上。
git rev parse--abbrev ref HEAD
将为您提供一个分支名称,如果您在分支上,否则将为您提供分离的头hashGreat解决方案。我就拿这个。你确定这个输出已经准备好使用了吗(即文本解析)?确定可以在中使用它。git能改变输出吗?是的,但是位腐蚀的脆弱性在您编写的任何代码中都是常见的。如果您担心,请编写一个单元测试。。。