Fur*_*har 211 git git-push git-rebase
我的git repo有问题.在我推送到服务器的最后几天,我收到这样的消息:"自动打包存储库以获得最佳性能",它似乎没有消失并返回shell.
我也尝试检查一个新的分支,然后在我以前的分支上做一个rebase,然后git gc
删除未使用的历史对象,然后进行推送,但仍然显示此消息.请让我知道我的回购发生了什么.
Cas*_*bel 291
简短版本:它意味着它所说的,如果你让它完成,一切都会很好.
在大多数操作中,可能会增加存储库中松散(解包)对象的数量(包括推送),Git会调用git gc --auto
.如果有足够的松散对象(默认情况下,至少6700),它将调用git repack -d -l
打包它们.如果有太多单独的包,它也会将它们重新打包成一个.
包是一个增量压缩的单个文件,包含大量对象.将对象存储在包中更有效,但是打包(压缩)对象需要时间,因此Git最初会创建松散的对象,然后通过自动调用来批量打包它们git gc --auto
.
如果你让Git完成重新包装,这种情况不会再发生一段时间了.它确实需要一段时间,特别是如果你有很多大的二进制对象,但如果它正在触发,那么它表明它可能会大大减少repo占用的磁盘空间量.如果您确实不希望它发生,您可以更改config参数gc.auto
.如果你把它增加到远大于6700的东西,它会不那么频繁地发生,但是当它发生时需要更长的时间.如果你减少它,它仍然必须做你当前的重新包装,但随后它会更频繁地发生并且更快完成.如果将其设置为0,则会禁用自动重新打包.
有关详细信息,请参阅man git-gc
(下--auto
)和man git-config
(下gc.auto
).
wbh*_*ing 44
虽然Jefroni是正确的,有时自动打包只需要时间来完成,如果OP描述的自动打包消息持续多天,那么git的清理很可能缺少悬空物体,如本问题所述.
要查看悬空对象是否触发有关自动打包的持续消息,请尝试运行git fsck
.如果你得到一长串悬挂提交,你可以用它来清理它们
git gc --prune=now
我通常必须每隔2-3个月在我的仓库中运行此操作,此时自动打包消息在单次拉动后不会消失.
And*_*dén 33
要禁用一个项目:
cd your_project_dir
git config gc.auto 0
Run Code Online (Sandbox Code Playgroud)
要全局禁用:
git config --global gc.auto 0
Run Code Online (Sandbox Code Playgroud)
Rud*_*udi 10
Git正在运行git-repack,它将许多对象(=文件,提交和树)打包到一个包文件中.Git有时这样做,当启发式表示可以节省空间时(包文件包含压缩对象增量,而对象/目录中的每个文件都包含压缩的完整文件内容)
归档时间: |
|
查看次数: |
55916 次 |
最近记录: |