设置和配置
获取和创建项目
基本快照
分支和合并
共享和更新项目
检查和比较
修补
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.45.1 → 2.47.0 无更改
- 2.45.0 04/29/24
- 2.42.1 → 2.44.2 无更改
- 2.42.0 08/21/23
- 2.1.4 → 2.41.2 无更改
- 2.0.5 12/17/14
描述
传统上,分支和标签的顶端(统称为引用)在 $GIT_DIR/refs
目录下的(子)目录中每个引用存储一个文件。虽然许多分支顶端往往会经常更新,但大多数标签和一些分支顶端却从未更新过。当一个仓库有数百或数千个标签时,这种每个引用一个文件的方式既浪费存储空间又损害性能。
此命令用于通过将引用存储在一个文件中($GIT_DIR/packed-refs
)来解决存储和性能问题。当在传统的 $GIT_DIR/refs
目录层次结构中找不到引用时,它会在该文件中查找,如果找到则使用该文件。
后续对分支的更新始终会在 $GIT_DIR/refs
目录层次结构下创建新文件。
处理引用过多的仓库的推荐做法是,首先使用 --all
打包其引用,然后偶尔运行 git pack-refs
。标签根据定义是静止的,预计不会更改。分支头部将与初始的 pack-refs --all
一起打包,但只有当前活动的分支头部才会解包,下一个 pack-refs
(不带 --all
)将保留它们未打包的状态。
选项
- --all
-
默认情况下,该命令打包所有已打包的标签和引用,并将其他引用保留原样。这是因为分支预计会积极开发,打包其顶端无助于提高性能。此选项会导致所有引用都被打包,但隐藏引用、损坏引用和符号引用除外。对于具有许多具有历史意义的分支的仓库很有用。
- --no-prune
-
该命令通常在打包引用后删除
$GIT_DIR/refs
层次结构下的松散引用。此选项指示它不要这样做。 - --auto
-
根据引用数据库的当前状态按需打包引用。行为取决于仓库使用的引用格式,并且将来可能会更改。
-
"文件": 尚未为
--auto
实现特殊处理。 -
"引用表": 表格被压缩,使得它们形成一个几何序列。对于两个表格 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
是 git[1] 套件的一部分