## 名称

git-index-pack - 为现有打包归档文件生成包索引文件

## 概要

    git index-pack [-v] [-o <index-file>] <pack-file>git index-pack --stdin [--fix-thin] [--keep] [-v] [-o <index-file>]                 [<pack-file>]

## 描述

从指定文件读取压缩归档文件（.pack），并为其构建一个包索引文件（.idx）。打包的压缩文件和包索引可以放在 Git 仓库的 objects / pack / 目录中。

## 选项

-v

详细了解正在发生的事情，包括进度状态。

-o <index-file>

将生成的包索引写入指定的文件。如果没有这个选项，包装索引文件的名称是通过将 .pack 替换为 .idx（并且如果打包归档的名称不以 .pack 结尾，则程序失败）从打包归档文件的名称构造的。

--stdin

提供此标志时，将从 stdin 中读取该包，然后将副本写入<pack-file>。如果未指定<pack-file>，那么该包将被写入当前 Git 存储库的 objects / pack / 目录，其默认名称将根据包内容确定。如果未指定<pack-file>，请考虑使用--keep 来防止此进程与之间的争用情况`git repack`。

--fix-thin

通过将已分类对象所基于的排除对象添加到包中，修复由（请参阅git-pack-objects [1]获得的详细信息）`git pack-objects --thin`生成的“瘦” 包。这个选项与--stdin 一起使用才有意义。

--keep

在将索引移动到其最终目标之前，请为关联的包文件创建一个空的.keep 文件。该选项通常需要使用--stdin 来防止同时`git repack`进程删除新构建的包和索引，然后才能更新引用以使用包中包含的对象。

--keep=<msg>

像--keep 在将索引移动到其最终目标之前创建一个.keep 文件，而不是创建一个空文件位置，然后`<msg>`将LF放入.keep 文件中。稍后可以在所有.keep 文件中搜索该`<msg>`消息以找到任何已失效的文件。

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

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

--strict

死亡，如果包装包含破碎的物体或链接。

--check-self-contained-and-connected

如果包装中含有损坏的链接，则死亡。仅限内部使用。

--threads=<n>

指定解析变化量时产生的线程数。这要求使用 pthread 编译索引包，否则该选项会被忽略并带有警告。这是为了减少多处理器机器的打包时间。然而，增量搜索窗口所需的内存量乘以线程数量。指定0将导致 Git 自动检测 CPU 的数量并使用最多3个线程。

--max-input-size=<size>

死亡，如果包装大于<尺寸>。

## 注意

索引创建完成后，将对对象名称列表进行排序，并将该列表的 SHA-1 哈希值打印到 stdout。如果还使用了--stdin，则以“pack \ t”或“keep \ t”作为前缀，前提是已成功创建新的.keep 文件。这对删除用作锁的.keep 文件非常有用，可防止上述`git repack`竞争。