简体中文 ▾ 主题 ▾ 最新版本 ▾ git-refs 最后更新于 2.52.0

名称

git-refs - 低级引用访问

概要

git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]
git refs verify [--strict] [--verbose]
git refs list [--count=<count>] [--shell|--perl|--python|--tcl]
		   [(--sort=<key>)…​] [--format=<format>]
		   [--include-root-refs] [--points-at=<object>]
		   [--merged[=<object>]] [--no-merged[=<object>]]
		   [--contains[=<object>]] [--no-contains[=<object>]]
		   [(--exclude=<pattern>)…​] [--start-after=<marker>]
		   [ --stdin | (<pattern>...)]
git refs exists <ref>
git refs optimize [--all] [--no-prune] [--auto] [--include <pattern>] [--exclude <pattern>]

描述

此命令提供对引用的低级访问。

命令

migrate

在不同格式之间迁移引用存储。

verify

验证引用数据库的一致性。

list

列出存储库中的引用,支持过滤、格式化和排序。此子命令是 git-for-each-ref[1] 的别名,并提供相同的功能。

exists

检查给定引用是否存在。如果存在,则返回退出代码 0;如果不存在,则返回 2;如果查找引用因除引用缺失以外的其他错误而失败,则返回 1。这不会验证引用是否解析为实际对象。

optimize

优化引用以提高存储库性能和减少磁盘使用量。此子命令是 git-pack-refs[1] 的别名,并提供相同的功能。

选项

<code>git refs migrate</code> 的以下选项是特定于此命令的

--ref-format=<format>

将引用存储迁移到的引用格式。可以是以下之一:

  • files 表示带有 packed-refs 的松散文件。这是默认值。

  • reftable 表示 reftable 格式。此格式是实验性的,其内部结构可能会更改。

--dry-run

执行迁移,但不要修改存储库。迁移后的引用将写入一个单独的目录,该目录可以单独检查。目录名称将在 stdout 上报告。这可用于在执行实际迁移之前仔细检查迁移是否按预期工作。

--reflog
--no-reflog

选择是迁移引用日志数据到新后端,还是丢弃它们。默认值为“--reflog”,表示迁移。

<code>git refs verify</code> 的以下选项是特定于此命令的

--strict

启用更严格的错误检查。这将导致将警告报告为错误。请参阅 git-fsck[1]

--verbose

在验证引用数据库一致性时,保持详细输出。

以下选项特定于 *git refs list*

<pattern>...

如果给出了一个或多个 *<pattern>* 参数,则只显示与至少一个模式匹配的引用,使用 fnmatch(3) 或字面匹配,后者匹配整个字符串或从开头到斜杠的部分。

--stdin

模式列表从标准输入读取,而不是从参数列表中读取。

--count=<count>

显示 *<count>* 个引用后停止。

--sort=<key>

按字段名 *<key>* 排序。在前面加上 - 表示按值降序排序。如果不指定,则使用 refname。您可以多次使用 --sort=<key> 选项,在这种情况下,最后一个键成为主键。

--format[=<format>]

一个字符串,用于内插正在显示的引用及其指向的对象中的 %(fieldname) 字段。此外,字符串字面量 %% 渲染为 %,而 %xx(其中 xx 是十六进制数字)渲染为具有十六进制代码 xx 的字符。例如,%00 内插为 *<NUL>*,%09 内插为 *<TAB>*,%0a 内插为 *<LF>*。

未指定时,*<format>* 默认为 %(objectname) SPC %(objecttype) TAB %(refname)

--color[=<when>]

尊重 --format 选项中指定的任何颜色。*<when>* 字段必须是 alwaysneverauto 之一(如果 *<when>* 缺失,则表现得好像给出了 always)。

--shell
--perl
--python
--tcl

如果给出,则将替换 %(fieldname) 占位符的字符串作为适合指定宿主语言的字符串字面量进行引用。这旨在生成一个可以直接“eval”的脚本。

--points-at=<object>

只列出指向给定对象的引用。

--merged[=<object>]

只列出其尖端可从指定提交(如果未指定则为 HEAD)到达的引用。

--no-merged[=<object>]

只列出其尖端不可从 *<object>*(如果未指定则为 HEAD)到达的引用。

--contains[=<object>]

只列出包含 *<object>*(如果未指定则为 HEAD)的引用。

--no-contains[=<object>]

只列出不包含 *<object>*(如果未指定则为 HEAD)的引用。

--ignore-case

排序和过滤引用时不区分大小写。

--omit-empty

在格式化引用中,如果格式扩展为空字符串,则不在其后打印换行符。

--exclude=<excluded-pattern>

如果给出了一个或多个 --exclude 选项,则只显示不匹配任何 *<excluded-pattern>* 参数的引用。匹配使用与上面 *<pattern>* 相同的规则。

--include-root-refs

列出根引用(HEAD 和伪引用),而不是常规引用。

--start-after=<marker>

通过跳过指定标记(包括该标记)之前的引用来允许分页输出。在分页时,应注意引用可能在调用之间被删除、修改或添加。输出将只包含按字母顺序跟在标记之后的引用。输出从字母顺序上排在标记之后的第一个引用开始。不能与 --sort=<key>--stdin 选项,或用于限制引用的 *<pattern>* 参数一起使用。

以下选项特定于 *git refs optimize*

--all

默认情况下,该命令打包所有已打包的标签和引用,并保留其他引用不变。这是因为分支预计会被积极开发,并且打包其尖端无助于提高性能。此选项会强制打包所有引用,但隐藏引用、损坏引用和符号引用除外。对于具有许多历史兴趣的分支的存储库很有用。

--no-prune

该命令通常在打包 $GIT_DIR/refs 层级下的松散引用后将其删除。此选项指示不执行此操作。

--auto

根据引用数据库的当前状态按需打包引用。行为取决于存储库使用的引用格式,并且可能会在将来发生变化。

  • "files": 松散引用将根据松散引用与 packed-refs 文件大小的比例打包到 packed-refs 文件中。 packed-refs 文件越大,就需要越多松散引用才能重新打包。

  • "reftable": 表格被压缩,形成几何序列。对于两个表 N 和 N+1,其中 N+1 是较新的,此操作保持 N 至少是 N+1 的两倍的属性。只有违反此属性的表才会被压缩。

--include <pattern>

根据 glob(7) 模式打包引用。此选项的重复会累加包含模式。如果一个引用同时包含在 --include--exclude 中,则 --exclude 具有优先权。使用 --include 将默认排除所有标签。符号引用和损坏引用永远不会被打包。与 --all 一起使用时,它将无效。使用 --no-include 清除并重置模式列表。

--exclude <pattern>

不要打包与给定的 glob(7) 模式匹配的引用。此选项的重复会累加排除模式。使用 --no-exclude 清除并重置模式列表。如果一个引用已经打包,使用 --exclude 包含它不会取消打包。

--all 一起使用时,只打包不匹配任何提供的 --exclude 模式的松散引用。

--include 一起使用时,将打包提供给 --include 的引用(减去提供给 --exclude 的引用)。

已知限制

引用格式迁移在其当前形式下有几项已知限制

  • 目前无法迁移具有工作区的存储库。

  • 在迁移过程中,没有办法阻止对存储库的并发写入。并发写入可能导致迁移状态不一致。用户应在更高层次上阻止写入。如果您的存储库已注册为计划维护,建议先使用 git-maintenance(1) 取消注册。

这些限制将来可能会解除。

GIT

Git[1] 套件的一部分