English ▾ 主题 ▾ 最新版本 ▾ git-index-pack 上次更新于 2.48.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 <索引文件>

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

--[no-]rev-index

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

--stdin

当提供此标志时,包将从 stdin 读取,然后将副本写入 <包文件>。如果未指定 <包文件>,则包将被写入当前 Git 仓库的 objects/pack/ 目录,并使用从包内容确定的默认名称。如果未指定 <包文件>,请考虑使用 --keep 以防止此进程与 *git repack* 之间出现竞争条件。

--fix-thin

通过将 delta 对象的依据的排除对象添加到包中,修复由 git pack-objects --thin 生成的“精简”包(有关详细信息,请参阅 git-pack-objects[1])。此选项仅在与 --stdin 结合使用时才有意义。

--keep

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

--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 的树,则在进入 pack/idx 文件名称的哈希值之后(请参阅“注释”),打印该 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>

如果包大于 <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 编写 promisor 包时非常有用,因为包的名称在包完全写入之前不是最终的。如果提供了 <message>,则该内容将被写入 .promisor 文件以供将来参考。有关更多信息,请参阅部分克隆

此外,如果给定包中有引用非 promisor 对象(在仓库中)的对象,则将这些非 promisor 对象重新打包到 promisor 包中。这避免了仓库具有可以通过 promisor 对象访问的非 promisor 对象的情况。

要求不指定 <包文件>。

注释

创建索引后,进入 pack/idx 文件名称的哈希值将打印到 stdout。如果也使用了 --stdin,则它以 "pack\t" 或 "keep\t" 为前缀(如果成功创建了新的 .keep 文件)。这对于删除用作锁的 .keep 文件以防止与上面提到的 *git repack* 竞争非常有用。

GIT

属于 git[1] 套件的一部分

scroll-to-top