设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.46.1 → 2.50.1 无更改
-
2.46.0
2024-07-29
- 2.43.1 → 2.45.4 无更改
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 无更改
-
2.42.0
2023-08-21
- 2.39.1 → 2.41.3 无变更
-
2.39.0
2022-12-12
- 2.21.1 → 2.38.5 无变更
-
2.21.0
2019-02-24
- 2.18.1 → 2.20.5 无更改
-
2.18.0
2018-06-21
- 2.10.5 → 2.17.6 无变更
-
2.9.5
2017-07-30
- 2.7.6 → 2.8.6 无更改
-
2.6.7
2017-05-05
- 2.1.4 → 2.5.6 无更改
-
2.0.5
2014-12-17
概要
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
形式是一个执行逆向操作的过滤器。它从标准输入(stdin)读取引用,每行一个引用,并显示本地仓库中不存在的引用。
--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
-
不向标准输出(stdout)打印任何结果。可与
--verify
一起使用,以静默方式检查引用是否存在。 - --exclude-existing[=<pattern>]
-
使
git
show-ref
作为过滤器,从标准输入(stdin)读取形式为 ^(?:<anything>\s)?<refname>(?:\^{})?$ 的引用,并对每个引用执行以下操作:(1) 如果行尾有^{}
,则去除;(2) 如果提供了模式且与 refname 不头部匹配,则忽略;(3) 如果 refname 不是格式良好的引用名称,则发出警告并跳过;(4) 如果 refname 是本地仓库中存在的引用,则忽略;(5) 否则输出该行。 - <pattern>…
-
显示匹配一个或多个模式的引用。模式从完整名称的末尾开始匹配,并且只匹配完整的部分,例如 master 匹配 refs/heads/master、refs/remotes/origin/master、refs/tags/jedi/master,但不匹配 refs/heads/mymaster 或 refs/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
以获取所有标签及其解引用的内容的列表。