设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
-
2.54.0
2026-04-20
- 2.53.0 无变更
-
2.52.0
2025-11-17
- 2.49.1 → 2.51.2 无更改
-
2.49.0
2025-03-14
- 2.48.1 → 2.48.2 无更改
- 2.48.0 无更改
- 2.47.1 → 2.47.3 无更改
-
2.47.0
2024-10-06
- 2.46.1 → 2.46.4 无更改
-
2.46.0
2024-07-29
概要
gitrefsmigrate--ref-format=<format> [--no-reflog] [--dry-run]gitrefsverify[--strict] [--verbose]gitrefslist[--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>...)]gitrefsexists<ref>gitrefsoptimize[--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] 的别名,功能完全相同。
选项
以下选项特定于 git refs migrate
以下选项特定于 git refs verify
--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插入为 \0 (NUL),%09插入为 \t (TAB),%0a插入为 \n (LF)。
如果不指定,<format> 默认为 %(objectname) SPC %(objecttype) TAB %(refname)。
--color[=<when>]-
遵守
--format选项中指定的颜色。<when> 字段必须是always、never或auto之一(如果未提供 <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的引用)将被打包。
已知限制
引用格式迁移在当前形式下有几个已知限制:
-
无法迁移拥有工作树(worktrees)的仓库。
-
在正在进行的迁移过程中,无法阻止对仓库的并发写入。并发写入可能导致迁移状态不一致。用户需要在更高级别上阻止写入。如果您的仓库已注册用于计划性维护,建议首先使用 git-maintenance(1) 取消注册。
这些限制将来可能会被取消。