设置和配置
获取和创建项目
基本快照
分支和合并
分享和更新项目
检查和比较
补丁
调试
邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.45.1 → 2.49.0 没有变化
-
2.45.0
2024-04-29
- 2.42.1 → 2.44.3 没有变化
-
2.42.0
2023-08-21
- 2.1.4 → 2.41.3 没有变化
-
2.0.5
2014-12-17
描述
传统上,分支和标签的提示(统称为refs)以每个 ref 一个文件的形式存储在 $GIT_DIR/refs
目录下的(子)目录中。 虽然许多分支提示倾向于经常更新,但大多数标签和一些分支提示永远不会更新。 当存储库有数百或数千个标签时,这种每个 ref 一个文件的格式既浪费存储空间又影响性能。
此命令用于通过将 refs 存储在单个文件 $GIT_DIR/packed-refs
中来解决存储和性能问题。 当从传统的 $GIT_DIR/refs
目录结构中找不到 ref 时,会在该文件中查找它,如果找到则使用它。
对分支的后续更新始终会在 $GIT_DIR/refs
目录结构下创建新文件。
处理具有过多 refs 的存储库的推荐做法是使用 --all
打包一次其 refs,并偶尔运行 git pack-refs
。 标签的定义是静态的,预计不会更改。 分支 head 将使用初始的 pack-refs --all
进行打包,但只有当前活动的分支 head 将被解包,而下一个 pack-refs
(没有 --all
)将使它们保持未解包状态。
选项
- --all
-
默认情况下,该命令会打包所有已打包的标签和 refs,而将其他 refs 保持原样。 这是因为分支预计会得到积极开发,并且打包它们的提示无助于提高性能。 此选项会导致所有 refs 也被打包,隐藏的 refs、损坏的 refs 和符号链接 refs 除外。 适用于具有许多历史兴趣分支的存储库。
- --no-prune
-
该命令通常在打包后删除
$GIT_DIR/refs
结构下的松散 refs。 此选项告诉它不要这样做。 - --auto
-
根据 ref 数据库的当前状态按需打包 refs。 该行为取决于存储库使用的 ref 格式,并且将来可能会更改。
-
"files": 尚未实现
--auto
的特殊处理。 -
"reftable": 对表进行压缩,使其形成一个几何序列。 对于两个表 N 和 N+1,其中 N+1 较新,这保持了 N 至少是 N+1 两倍大的属性。 只有违反此属性的表才会被压缩。
-
- --include <pattern>
-
根据
glob(7)
模式打包 refs。 重复此选项会累积包含模式。 如果一个 ref 同时包含在--include
和--exclude
中,则--exclude
优先。 使用--include
将阻止默认情况下包含所有标签。 符号链接 refs 和损坏的 refs 永远不会被打包。 与--all
一起使用时,它将不起作用。 使用--no-include
清除并重置模式列表。 - --exclude <pattern>
-
不要打包与给定的
glob(7)
模式匹配的 refs。 重复此选项会累积排除模式。 使用--no-exclude
清除并重置模式列表。 如果一个 ref 已经被打包,包括它与--exclude
不会解包它。
与 --all
一起使用时,仅打包与任何提供的 --exclude
模式不匹配的松散 refs。
与 --include
一起使用时,提供给 --include
的 refs,减去提供给 --exclude
的 refs 将被打包。
GIT
属于 git[1] 套件的一部分