©
Ce document utilise Manuel du site Web PHP chinois Libérer
git-repack - 在存储库中打包解包的对象
git repack [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [--window=<n>] [--depth=<n>] [--threads=<n>]
该命令用于将当前未驻留在“pack”中的所有对象组合到一个包中。它也可以用来重新组织现有的包装成单一,更高效的包装。
一个包是对象的集合,单独压缩,应用增量压缩,存储在单个文件中,并具有关联的索引文件。
软件包用于减少镜像系统,备份引擎,磁盘存储等的负载。
-a
而不是逐步打包解包的对象,将所有引用的东西打包到一个包中。打包用于私人开发的存储库时特别有用。使用-d
。这将清理git prune
留下的物体,但git fsck --full --dangling
显示为悬挂。
请注意,通过哑协议获取的用户必须获取整个新包才能获取任何包含的对象,而不管该包中已有多少个其他对象。
-A
和-a
一样,除非-d
被使用。然后,前一包中的任何无法访问的对象变成松散的,未包装的对象,而不是留在旧包中。无法到达的物体从未故意添加到包中,即使在重新包装时也是如此。此选项可防止无法访问的对象被保留在旧包中而被删除。相反,松散的不可访问的对象将在下一次git gc
调用时根据正常的过期规则进行修剪。参见git-gc [1]。
-d
打包之后,如果新创建的包使某些现有包冗余,请移除冗余包。还可以运行git prune-packed
以删除多余的松散对象文件。
-l
将--local
选项传递给git pack-objects
。参见git-pack-objects。
-f
将--no-reuse-delta
选项传递给git-pack-objects
git-pack-objects。
-F
将--no-reuse-object
选项传递给git-pack-objects
git-pack-objects。
-q
将-q
选项传递给git pack-objects
。参见git-pack-objects。
-n
不要使用更新服务器信息git update-server-info
。此选项将跳过通过HTTP或FTP更新发布此存储库(或其直接副本)所需的本地目录文件。参见git-update-server-info。
--window=<n> --depth=<n>
这两个选项会影响包中包含的对象如何使用增量压缩进行存储。对象首先在内部按类型,大小和可选名称进行排序,并与其他对象进行比较,--window
以查看使用增量压缩是否节省空间。--depth
限制最大增量深度; 使得它太深,会影响解包方的性能,因为需要多次应用增量数据才能获得必要的对象。--window的默认值是10,--depth是50。
--threads=<n>
该选项通过传递给git pack-objects
。
--window-memory=<n>
此选项提供额外的限制--window
; 窗口大小将动态缩小,以便不占用<n>
内存中的多个字节。在大型和小型对象混合使用的存储库中,这对于不会用大型窗口内存不足的情况很有用,但仍可以利用大型窗口来查看较小的对象。大小可以加上“k”,“m”或“g”后缀。--window-memory=0
使内存使用无限。默认值取自pack.windowMemory
配置变量。请注意,实际内存使用量将是限制乘以git-pack-objects使用的线程数量。
--max-pack-size=<n>
每个输出包文件的最大大小。大小可以加上“k”,“m”或“g”后缀。允许的最小尺寸限制为1 MiB。如果指定,则可能会创建多个包文件,这也会阻止创建位图索引。默认值是无限的,除非配置变量pack.packSizeLimit
被设置。
-b --write-bitmap-index
编写一个可达性位图索引作为重新包装的一部分。这只适用于-a
or 时才有意义-A
,因为位图必须能够引用所有可到达的对象。此选项覆盖设置repack.writeBitmaps
。如果创建多个包文件,此选项不起作用。
--pack-kept-objects
.keep
重新包装时在文件中包含对象。请注意,我们仍然不会.keep
在pack-objects
完成后删除包。这意味着我们可能会复制对象,但是这可以在并发推送或提取时使用此选项。此选项通常仅在使用-b
or 编写位图时才有用repack.writeBitmaps
,因为它可确保位图packfile具有必需的对象。
--unpack-unreachable=<when>
松开不可触及的对象时,不要打扰任何比以前更老的物体<when>
。这可以用来优化任何可以立即被后续修剪的对象的写入git prune
。
-k --keep-unreachable
当与它一起使用时-ad
,现有包中的任何不可达对象都将被添加到包文件的末尾,而不是被删除。另外,任何不可及的松散物体都将被包装(并且它们的松散对象被移除)。
默认情况下,该命令将--delta-base-offset
选项传递给git pack-objects
; 这通常会导致更小的包,但生成的包与Git版本比1.4.4版本不兼容。如果您需要直接或通过哑HTTP协议来共享您的存储库中的古老Git版本,那么您需要将配置变量设置repack.UseDeltaBaseOffset
为“false”并重新打包。通过本地协议从旧Git版本访问不受此选项的影响,因为在此情况下根据需要即时执行转换。
git-pack-objects[1] git-prune-packed[1]