设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 无更改
-
2.51.0
2025-08-18
- 2.50.1 无更改
-
2.50.0
2025-06-16
- 2.45.1 → 2.49.1 无更改
-
2.45.0
2024-04-29
- 2.42.1 → 2.44.4 无更改
-
2.42.0
2023-08-21
- 2.1.4 → 2.41.3 无更改
-
2.0.5
2014-12-17
描述
传统上,分支和标签的尖端(统称为引用)存储在 $GIT_DIR/refs 目录下的子目录中,每个引用一个文件。虽然许多分支尖端倾向于频繁更新,但大多数标签和一些分支尖端从不更新。当一个仓库有成百上千的标签时,这种每个引用一个文件的格式既浪费存储空间又损害性能。
此命令用于通过将引用存储在一个文件中 $GIT_DIR/packed-refs 来解决存储和性能问题。当在传统的 $GIT_DIR/refs 目录层次结构中找不到某个引用时,它会在该文件中查找,如果找到则使用。
对分支的后续更新始终会在 $GIT_DIR/refs 目录层次结构下创建新文件。
处理具有过多引用的仓库的推荐做法是使用 --all 打包一次其引用,并偶尔运行 git pack-refs。标签根据定义是固定的,不应更改。分支头将使用初始的 pack-refs --all 进行打包,但只有当前活动的分支头会解包,下一个(不带 --all 的)pack-refs 将把它们保持解包状态。
选项
- --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的引用。