设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
-
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] 的别名,并提供相同的功能。
选项
<code>git refs migrate</code> 的以下选项是特定于此命令的
<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>* 字段必须是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的引用)。
已知限制
引用格式迁移在其当前形式下有几项已知限制
-
目前无法迁移具有工作区的存储库。
-
在迁移过程中,没有办法阻止对存储库的并发写入。并发写入可能导致迁移状态不一致。用户应在更高层次上阻止写入。如果您的存储库已注册为计划维护,建议先使用 git-maintenance(1) 取消注册。
这些限制将来可能会解除。