中文 ▾ 主题 ▾ 最新版本 ▾ git-show-ref 上次更新于 2.46.0

名称

git-show-ref - 列出本地存储库中的引用

概要

git show-ref [--head] [-d | --dereference]
	     [-s | --hash[=<n>]] [--abbrev[=<n>]] [--branches] [--tags]
	     [--] [<pattern>…​]
git show-ref --verify [-q | --quiet] [-d | --dereference]
	     [-s | --hash[=<n>]] [--abbrev[=<n>]]
	     [--] [<ref>…​]
git show-ref --exclude-existing[=<pattern>]
git show-ref --exists <ref>

描述

显示本地存储库中可用的引用以及相关的提交 ID。可以使用模式过滤结果,并且可以将标记取消引用为对象 ID。此外,它还可用于测试特定引用是否存在。

默认情况下,显示标记、头部和远程引用。

--exclude-existing 形式是一个过滤器,它的作用相反。它从标准输入读取引用,每行一个引用,并显示本地存储库中不存在的引用。

--exists 形式可用于检查单个引用是否存在。此形式不验证引用是否解析为实际对象。

建议使用此实用程序,而不是直接访问 .git 目录下的文件。

选项

--head

显示 HEAD 引用,即使它通常会被过滤掉。

--branches
--tags

分别限制为本地分支和本地标记。这些选项不是互斥的;如果两者都给出,则显示存储在 "refs/heads" 和 "refs/tags" 中的引用。请注意,--heads--branches 的已弃用的同义词,将来可能会被删除。

-d
--dereference

也将标记取消引用为对象 ID。它们将显示为附加了 ^{}

-s
--hash[=<n>]

仅显示 OID,而不显示引用名称。与 --dereference 结合使用时,取消引用的标记仍将在 OID 之后显示。

--verify

通过要求精确的引用路径来启用更严格的引用检查。除了返回错误代码 1 之外,如果未指定 --quiet,它还会打印一条错误消息。

--exists

检查给定的引用是否存在。如果存在,则返回退出代码 0;如果缺少,则返回 2;如果查找引用失败,并且错误不是引用丢失,则返回 1。

--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 是本地存储库中已存在的引用,则忽略;(5) 否则输出该行。

<pattern>…​

显示与一个或多个模式匹配的引用。模式从完整名称的末尾匹配,并且仅匹配完整的部分,例如 master 匹配 refs/heads/masterrefs/remotes/origin/masterrefs/tags/jedi/master,但不匹配 refs/heads/mymasterrefs/remotes/master/jedi

输出

输出格式为

<oid> SP <ref> LF

例如,

$ 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)时,输出格式为

<oid> LF

例如,

$ git show-ref --branches --hash
2e3ba0114a1f52b47df29743d6915d056be13278
185008ae97960c8d551adcd9e23565194651b5d1
03adf42c988195b50e1a1935ba5fcbc39b2b029b
...

示例

要显示所有名为 "master" 的引用,无论是标记还是头部,还是其他任何内容,并且无论它们在引用命名层次结构中的深度如何,请使用

	git show-ref master

如果存在此类引用,这将显示 "refs/heads/master",以及 "refs/remote/other-repo/master"。

使用 --verify 标志时,该命令需要精确的路径

	git show-ref --verify refs/heads/master

将仅匹配名为 "master" 的确切分支。

如果没有匹配项,git show-ref 将返回错误代码 1,并且在验证的情况下,它将显示一条错误消息。

对于脚本,您可以要求它使用 --quiet 标志保持静默,这允许您执行以下操作:

	git show-ref --quiet --verify -- "refs/heads/$headname" ||
		echo "$headname is not a valid branch"

来检查特定分支是否存在(请注意我们实际上不想显示任何结果,并且我们希望为其使用完整的引用名称,以避免触发歧义的部分匹配问题)。

要仅显示标记,或仅显示正确的分支头部,请分别使用 --tags 和/或 --branches(同时使用两者意味着它显示标记和分支,但不显示 refs/ 子目录下的其他随机引用)。

要执行自动标记对象取消引用,请使用 -d--dereference 标志,以便您可以执行

	git show-ref --tags --dereference

以获取所有标记的列表以及它们取消引用的内容。

文件

.git/refs/*, .git/packed-refs

GIT

属于 git[1] 套件的一部分

scroll-to-top