设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
-
2.52.0
2025-11-17
- 2.48.1 → 2.51.2 无更改
-
2.48.0
2025-01-10
- 2.44.1 → 2.47.3 无更改
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 无更改
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 无更改
-
2.42.0
2023-08-21
- 2.36.1 → 2.41.3 无更改
-
2.36.0
2022-04-18
- 2.34.1 → 2.35.8 无更改
-
2.34.0
2021-11-15
- 2.31.1 → 2.33.8 无变化
-
2.31.0
2021-03-15
- 2.29.1 → 2.30.9 无变更
-
2.29.0
2020-10-19
- 2.28.1 无更改
-
2.28.0
2020-07-27
- 2.18.1 → 2.27.1 无更改
-
2.18.0
2018-06-21
- 2.17.1 → 2.17.6 无更改
-
2.17.0
2018-04-02
- 2.12.5 → 2.16.6 无更改
-
2.11.4
2017-09-22
- 2.1.4 → 2.10.5 无更改
-
2.0.5
2014-12-17
概要
git index-pack [-v] [-o <index-file>] [--[no-]rev-index] <pack-file> git index-pack --stdin [--fix-thin] [--keep] [-v] [-o <index-file>] [--[no-]rev-index] [<pack-file>]
描述
读取指定文件中的打包存档 (.pack),为其构建 pack 索引文件 (.idx),并可选地为指定的 pack 写入反向索引 (.rev)。然后,打包存档和 pack 索引可以放置在 Git 存储库的 objects/pack/ 目录中。
选项
- -v
-
详细说明正在进行的操作,包括进度状态。
- -o <index-file>
-
将生成的 pack 索引写入指定文件。不使用此选项时,pack 索引文件的名称是从打包存档文件的名称构建的,方法是将 .pack 替换为 .idx(如果打包存档的名称不以 .pack 结尾,则程序会失败)。
- --rev-index
- --no-rev-index
-
提供此标志时,生成与给定 pack 相对应的反向索引(一个
.rev文件)。如果提供了--verify,则确保现有的反向索引是正确的。此选项优先于pack.writeReverseIndex。 - --stdin
-
提供此标志时,pack 将从 stdin 读取,然后复制到 <pack-file>。如果未指定 <pack-file>,则 pack 将写入当前 Git 存储库的 objects/pack/ 目录,其默认名称由 pack 内容确定。如果未指定 <pack-file>,请考虑使用 --keep 以防止此过程与 git repack 之间发生竞争条件。
- --fix-thin
-
通过添加被包含对象(delta 对象所基于的对象)到 pack 来修复由
gitpack-objects--thin生成的“thin” pack(有关详细信息,请参阅 git-pack-objects[1])。此选项仅在与 --stdin 结合使用时才有意义。 - --keep
-
在将索引移动到最终目的地之前,为关联的 pack 文件创建一个空的 .keep 文件。此选项通常在使用 --stdin 时是必需的,以防止同时运行的 git repack 进程在 refs 更新到使用 pack 中包含的对象之前删除新构建的 pack 和索引。
- --keep=<msg>
-
与 --keep 类似,在将索引移动到最终目的地之前创建一个 .keep 文件。但是,不是创建一个空文件,而是将 <msg> 后面加上一个 LF 放入 .keep 文件。之后可以在所有 .keep 文件中搜索 <msg> 消息,以查找任何已过时的文件。
- --index-version=<version>[,<offset>]
-
这仅供测试套件使用。它允许强制生成 pack 索引的版本,并在给定偏移量之上的对象上强制使用 64 位索引条目。
- --strict[=<msg-id>=<severity>…]
-
如果 pack 包含损坏的对象或链接,则终止。可以传递一个可选的逗号分隔的 <msg-id>
=<severity> 列表来更改某些可能问题的严重性,例如--strict="missingEmail=ignore,badTagName=error"。有关 <msg-id> 和 <severity> 的可能值的更多信息,请参阅 git-fsck[1] 中fsck.<msg-id> 配置选项的条目。 - --progress-title
-
仅供内部使用。
设置进度条的标题。默认标题为“Receiving objects”,在指定
--stdin时为“Indexing objects”。 - --check-self-contained-and-connected
-
如果 pack 包含损坏的链接,则终止。仅供内部使用。
- --fsck-objects[=<msg-id>=<severity>…]
-
如果 pack 包含损坏的对象,则终止,但与
--strict不同,它不会因为损坏的链接而中断。如果 pack 包含一个指向不存在的 .gitmodules blob 的树,则在进入 pack/idx 文件名的散列之后(请参阅“Notes”)打印该 blob 的散列(供调用者检查)。可以传递一个可选的逗号分隔的 <msg-id>
=<severity> 列表来更改某些可能问题的严重性,例如--fsck-objects="missingEmail=ignore,badTagName=ignore"。有关 <msg-id> 和 <severity> 的可能值的更多信息,请参阅 git-fsck[1] 中fsck.<msg-id> 配置选项的条目。 - --threads=<n>
-
指定解析 delta 时要生成的线程数。这要求 index-pack 已与 pthreads 编译,否则此选项将被忽略并发出警告。此选项旨在减少多处理器机器上的打包时间。然而,delta 搜索窗口所需的内存量会乘以线程数。指定 0 将导致 Git 自动检测 CPU 数量并最多使用 3 个线程。
- --max-input-size=<size>
-
如果 pack 大于 <size>,则终止。
- --object-format=<hash-algorithm>
-
为 pack 指定给定的对象格式(散列算法)。有效值为 sha1 和(如果已启用)sha256。默认值为当前存储库的算法(由
extensions.objectFormat设置),或在存储库外时为 sha1(如果未设置值)。不能将此选项与 --stdin 一起使用。
注意:目前,SHA-256 仓库与 SHA-1 仓库之间不具备互操作性。
过去,我们曾警告说 SHA-256 仓库在引入此类互操作性功能时可能需要向后不兼容的更改。今天,我们仅预期兼容性更改。此外,如果事实证明这些更改是必要的,那么可以预期今天 Git 创建的 SHA-256 仓库将在不丢失数据的情况下被未来版本的 Git 使用。
- --promisor[=<message>]
-
在提交 pack-index 之前,为此 pack 创建一个 .promisor 文件。在使用 --fix-thin 写入 promisor pack 时特别有用,因为 pack 的名称在 pack 完全写入之前是未知的。如果提供了 <message>,则该内容将写入 .promisor 文件以供将来参考。有关更多信息,请参阅 partial clone。
此外,如果给定的 pack 中存在引用非 promisor 对象(在存储库中)的对象,则会将这些非 promisor 对象重新打包到 promisor pack 中。这可以避免存储库中存在可以通过 promisor 对象访问的非 promisor 对象的情况。
要求不指定 <pack-file>。
注意事项
一旦创建了索引,进入 pack/idx 文件名的散列将被打印到 stdout。如果还使用了 --stdin,则在此之前会加上“pack\t”或“keep\t”(如果成功创建了新的 .keep 文件)。这有助于删除用作锁的 .keep 文件,以防止上述与 git repack 的竞争。