git show-ref
git-show-ref
命名
git-show-ref - 在本地存储库中列出引用
概要
git show-ref [-q|--quiet] [--verify] [--head] [-d|--dereference]
[-s|--hash[=<n>]] [--abbrev[=<n>]] [--tags]
[--heads] [--] [<pattern>…]
git show-ref --exclude-existing[=<pattern>]
描述
显示本地存储库中可用的引用以及关联的提交ID。可以使用模式过滤结果,并可以将标记解引用到对象ID中。此外,它可以用来测试一个特定的ref是否存在。
默认情况下,显示标签,标题和远程引用。
--exclude-existing表单是一个反过来的过滤器。它从stdin中读取ref,每行一个ref,并显示那些不存在于本地存储库中的文件。
鼓励使用此实用程序,以便直接访问目录下的.git
文件。
选项
--head
显示HEAD参考,即使它通常会被过滤掉。
--tags --heads
分别限制为“refs / heads”和“refs / tags”。这些选择不是相互排斥的; 当同时给出时,显示存储在“refs / heads”和“refs / tags”中的引用。
-d --dereference
将标签解除引用到对象ID中。它们将以附加的“^ {}”显示。
-s --hash=<n>
只显示SHA-1散列,而不是引用名称。当与--deference相结合时,解除引用的标签仍然会在SHA-1之后显示。
--verify
通过要求精确的参考路径来启用更严格的参考检查。除了返回1的错误代码之外,如果--quiet
没有指定错误代码,它还会打印一条错误消息。
--abbrev=<n>
缩写对象名称。使用时--hash
,你不必说--hash --abbrev
; --hash=n
会做。
-q --quiet
不要将任何结果打印到标准输出。与--verify
此结合使用时可以静静地检查是否存在参考。
--exclude-existing=<pattern>
使git show-ref充当一个过滤器,从“ ^(?:<anything>\s)?<refname>(?:\^{})?$” 形式的标准输入读取引用,并对每个标准执行以下操作:(1)在行尾添加“^ {}”(如果有); (2)忽略是否提供了模式并且不匹配refname; (3)如果refname不是格式正确的refname并跳过,则警告; (4)如果refname是本地存储库中存在的ref,则忽略; (5)否则输出该行。
<pattern>…
显示匹配一个或多个模式的参考。模式是从全名的末尾匹配,只有完整的零部件匹配,如master
火柴refs/heads/master
,refs/remotes/origin/master
,refs/tags/jedi/master
但不refs/heads/mymaster
还是refs/remotes/master/jedi
。
输出
输出格式为:<SHA-1 ID> <space> <reference name>。
$ git show-ref --head --dereference
832e76a9899f560a90ffd62ae2ce83bbeff58f54 HEAD
832e76a9899f560a90ffd62ae2ce83bbeff58f54 refs/heads/master
832e76a9899f560a90ffd62ae2ce83bbeff58f54 refs/heads/origin
3521017556c5de4159da4615a39fa4d5d2c279b5 refs/tags/v0.99.9c
6ddc0964034342519a87fe013781abf31c6db6ad refs/tags/v0.99.9c^{}
055e4ae3ae6eb344cbabf2a5256a49ea66040131 refs/tags/v1.0rc4
423325a2d24638ddcc82ce47be5e40be550f4507 refs/tags/v1.0rc4^{}
...
当使用--hash(而不是--dereference)时,输出格式为: <SHA-1 ID>
$ git show-ref --heads --hash
2e3ba0114a1f52b47df29743d6915d056be13278
185008ae97960c8d551adcd9e23565194651b5d1
03adf42c988195b50e1a1935ba5fcbc39b2b029b
...
例子
要显示所有名为“主”的引用,无论是标签还是头或其他内容,也不管参考命名层次中的深度如何,都使用:
git show-ref master
如果存在这样的参考,这将显示“refs / heads / master”,但也会显示“refs / remote / other-repo / master”。
使用该--verify
标志时,该命令需要一个确切的路径:
git show-ref --verify refs/heads/master
将只匹配称为“主”的确切分支。
如果没有匹配,git show-ref
将返回错误代码1,并且在验证的情况下,它将显示错误消息。
对于脚本编写,你可以用“--quiet”标志让它安静,这样可以让你做类似的事情
git show-ref --quiet --verify -- "refs/heads/$headname" ||
echo "$headname is not a valid branch"
检查一个特定的分支是否存在(请注意我们实际上并不想显示任何结果,并且我们希望使用它的完整refname以避免模糊部分匹配的问题)。
要仅显示标签或仅显示正确的分支头,分别使用“--tags”和/或“--heads”(使用两种方式表示标签和标题,但不包含refs /子目录下的其他随机引用)。
要执行自动标记对象解引用,请使用“-d”或“--deference”标志,以便您可以执行此操作
git show-ref --tags --dereference
获取所有标签以及他们解除引用的列表。
文件
.git/refs/*
, .git/packed-refs