direktori cari
Guides gitattributes giteveryday gitglossary gitignore gitmodules gitrevisions gittutorial gitworkflows Administration git archive git bundle git clean git filter-branch git fsck git gc git instaweb git reflog Basic Snapshotting git add git commit git diff git mv git reset git rm git status Branching and Merging git branch git checkout git log git merge git mergetool git stash git tag Debugging git bisect git blame git grep Email git am git format-patch git request-pull git send-email External Systems git fast-import git svn Getting and Creating Projects git clone git init Git git annotate git archimport git bisect-lk2009 git check-attr git check-mailmap git check-ref-format git checkout-index git cherry git citool git column git credential git credential-cache git credential-store git cvsexportcommit git cvsimport git cvsserver git diff-files git diff-tree git difftool git fast-export git fetch-pack git fmt-merge-msg git get-tar-commit-id git gui git http-backend git http-fetch git http-push git imap-send git index-pack git interpret-trailers git ls-remote git ls-tree git mailinfo git mailsplit git merge-file git merge-index git merge-one-file git merge-tree git mktag git mktree git name-rev git notes git p4 git pack-objects git pack-redundant git pack-refs git parse-remote git patch-id git prune git prune-packed git quiltimport git receive-pack git remote-ext git remote-fd git remote-testgit git repack git replace git rerere git send-pack git sh-i18n git sh-setup git shell git show-branch git show-index git stripspace git unpack-file git unpack-objects git upload-archive git upload-pack git var git verify-commit git verify-tag git whatchanged git worktree Inspection and Comparison git describe git shortlog git show Miscellaneous api credentials api index gitcli gitcore tutorial gitcredentials gitcvs migration gitdiffcore githooks gitk gitnamespaces gitremote helpers gitrepository layout gitsubmodules gittutorial 2 gitweb gitweb.conf pack format User Manual Patching git apply git cherry-pick git rebase git revert Plumbing Commands git cat-file git check-ignore git commit-tree git count-objects git diff-index git for-each-ref git hash-object git ls-files git merge-base git read-tree git rev-list git rev-parse git show-ref git symbolic-ref git update-index git update-ref git verify-pack git write-tree Server Admin git daemon git update-server-info Setup and Config git git config git help Sharing and Updating Projects git fetch git pull git push git remote git submodule
watak

名称

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-objectsgit-pack-objects。

-F

--no-reuse-object选项传递给git-pack-objectsgit-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

编写一个可达性位图索引作为重新包装的一部分。这只适用于-aor 时才有意义-A,因为位图必须能够引用所有可到达的对象。此选项覆盖设置repack.writeBitmaps。如果创建多个包文件,此选项不起作用。

--pack-kept-objects

.keep重新包装时在文件中包含对象。请注意,我们仍然不会.keeppack-objects完成后删除包。这意味着我们可能会复制对象,但是这可以在并发推送或提取时使用此选项。此选项通常仅在使用-bor 编写位图时才有用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]

Artikel sebelumnya: Artikel seterusnya: