Git
English ▾ 主题 ▾ 最新版本 ▾ git-index-pack 最后更新于 2.44.0

名称

git-index-pack - 为现有的打包归档构建打包索引文件

概要

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),为其构建打包索引文件 (.idx),并可选地为指定的打包文件写入反向索引 (.rev)。打包归档文件以及打包索引文件随后可以放置在 Git 存储库的 objects/pack/ 目录中。

选项

-v

详细说明正在发生的事情,包括进度状态。

-o <index-file>

将生成的打包索引写入指定的文件。如果没有此选项,则打包索引文件的名称是通过将打包归档文件的名称中的 .pack 替换为 .idx 来构造的(如果打包归档文件的名称不以 .pack 结尾,则程序将失败)。

--[no-]rev-index

如果提供此标志,则生成与给定打包文件对应的反向索引 (.rev 文件)。如果给出 --verify,请确保现有的反向索引正确。优先于 pack.writeReverseIndex

--stdin

如果提供此标志,则打包文件将从 stdin 读取,然后将其副本写入 <pack-file>。如果没有指定 <pack-file>,则打包文件将写入当前 Git 存储库的 objects/pack/ 目录,其默认名称由打包文件内容确定。如果没有指定 <pack-file>,请考虑使用 --keep 来防止此进程与 git repack 之间的竞争条件。

--fix-thin

修复由 git pack-objects --thin 生成的“瘦”打包文件(有关详细信息,请参阅 git-pack-objects[1]),方法是将基于增量对象的排除对象添加到打包文件中。此选项仅与 --stdin 结合使用才有意义。

--keep

在将索引移动到其最终目的地之前,为关联的打包文件创建一个空的 .keep 文件。此选项通常与 --stdin 一起使用是必要的,以防止同时进行的 git repack 进程在引用更新为使用打包文件中包含的对象之前删除新构建的打包文件和索引。

--keep=<msg>

与 --keep 类似,在将索引移动到其最终目的地之前创建一个 .keep 文件。但是,不是创建空文件,而是将 <msg> 后跟 LF 放入 .keep 文件中。稍后可以在所有 .keep 文件中搜索 <msg> 消息,以找到任何已超出其使用期限的文件。

--index-version=<version>[,<offset>]

这仅供测试套件使用。它允许强制生成的打包索引的版本,并强制对位于给定偏移量以上的对象使用 64 位索引条目。

--strict[=<msg-id>=<severity>…​]

如果打包文件包含损坏的对象或链接,则退出。可以传递一个可选的逗号分隔的 <msg-id>=<severity> 列表来更改某些可能问题的严重性,例如 --strict="missingEmail=ignore,badTagName=error"。有关 <msg-id><severity> 的可能值的更多信息,请参阅 git-fsck[1]fsck.<msg-id> 配置选项的条目。

--progress-title

仅供内部使用。

设置进度条的标题。默认情况下,标题为“接收对象”,当指定 --stdin 时,标题为“索引对象”。

--check-self-contained-and-connected

如果打包文件包含损坏的链接,则退出。仅供内部使用。

--fsck-objects[=<msg-id>=<severity>…​]

如果打包文件包含损坏的对象,则退出,但与 --strict 不同,它不会因损坏的链接而停止。如果打包文件包含一个指向不存在的 .gitmodules blob 的树,则在进入打包/idx 文件名称的哈希值之后打印该 blob 的哈希值(供调用者检查)(请参阅“注释”)。

可以传递一个可选的逗号分隔的 <msg-id>=<severity> 列表来更改某些可能问题的严重性,例如 --fsck-objects="missingEmail=ignore,badTagName=ignore"。有关 <msg-id><severity> 的可能值的更多信息,请参阅 git-fsck[1]fsck.<msg-id> 配置选项的条目。

--threads=<n>

指定在解析增量时要生成的线程数。这要求 index-pack 使用 pthreads 编译,否则此选项将被忽略并发出警告。这旨在减少多处理器机器上的打包时间。但是,增量搜索窗口所需的内存量将乘以线程数。指定 0 将导致 Git 自动检测 CPU 数量并最多使用 3 个线程。

--max-input-size=<size>

如果打包文件大于 <size>,则退出。

--object-format=<hash-algorithm>

为打包文件指定给定的对象格式(哈希算法)。有效值为 sha1 和(如果已启用)sha256。默认值为当前存储库的算法(由 extensions.objectFormat 设置),或者如果未设置值或在存储库外部,则为 sha1

此选项不能与 --stdin 一起使用。

注意:目前,SHA-256 存储库和 SHA-1 存储库之间没有互操作性。

在历史上,我们警告说,当我们引入此类互操作性功能时,SHA-256 存储库可能以后需要向后不兼容的更改。今天,我们只期望兼容的更改。此外,如果此类更改被证明是必要的,则可以预期使用当今的 Git 创建的 SHA-256 存储库将可用于未来的 Git 版本,而不会丢失数据。

--promisor[=<message>]

在提交打包索引之前,为该打包文件创建一个 .promisor 文件。当使用 --fix-thin 写入承诺打包文件时,这尤其有用,因为打包文件的名称在打包文件完全写入之前是不确定的。如果提供了 <message>,则该内容将写入 .promisor 文件以供将来参考。有关更多信息,请参阅 部分克隆

注释

索引创建完成后,用于 pack/idx 文件名的哈希值将打印到标准输出。如果也使用了 --stdin 选项,则该哈希值前会加上 "pack\t" 或 "keep\t"(如果成功创建了新的 .keep 文件)。这对于移除用作锁的 .keep 文件非常有用,以防止上述提到的与 git repack 产生的竞争条件。

Git

git[1] 套件的一部分

scroll-to-top