git - "Auto packing the repository for optimum performance"是什么意思?

标签 git git-rebase git-push

我的 git 存储库有问题。在过去的几天里,每当我向服务器推送时,我都会收到这条消息:“自动打包存储库以获得最佳性能”,它似乎并没有消失并返回 shell。

我还尝试 checkout 到一个新分支,然后在我以前的分支上进行 rebase ,然后执行 git gc 删除未使用的历史对象,然后进行推送,但仍然出现此消息。请让我知道我的 repo 发生了什么。

最佳答案

简而言之:就是说到做到,如果你让它完成,一切都会好起来的。

在大多数可能会增加存储库中松散(未打包)对象数量的操作(包括推送)中,Git 调用 git gc --auto。如果有足够多的松散对象(默认情况下,至少 6700 个),它将调用 git repack -d -l 来打包它们。如果有太多单独的包,它也会将它们重新打包成一个。

包是增量压缩的单个文件,包含大量对象。将对象打包存储效率更高,但打包(压缩)对象需要时间,因此 Git 最初创建松散的对象,然后不时地通过自动调用 git gc --auto.

如果让 Git 完成重新打包,暂时不会再发生这种情况。确实可能需要一段时间,尤其是当您有很多大型二进制对象时,但如果触发,那么这表明它可能会大大减少存储库占用的磁盘空间量。如果您真的不希望它发生,您可以更改配置参数 gc.auto。如果将它增加到比 6700 大得多的值,它发生的频率就会降低,但发生的时间会更长。如果你减少它,它仍然需要做你当前的重新包装,但随后它会更频繁地发生并更快地完成。如果将其设置为 0,它将禁用自动重新打包。

参见man git-gc(在--auto下)和man git-config(在gc.auto) 了解更多信息。

关于git - "Auto packing the repository for optimum performance"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8633981/

相关文章:

git - 有没有办法让 git-push 具有交互性?

angularjs - 服务器/客户端的 Git 架构不错吗?

javascript - 当我尝试创建提交时出现错误 "Cannot find module ' eslint-config-strict/es 5'"

git - 如何让 Git 在 rebase 期间始终使用 "theirs/ours"来解决特定文件中的冲突?

通过 ssh 推送时 Git 推送挂起

Git - 通过一次 merge 提交推送到新的远程

git - 追溯 svn 导入到 git

git - 如何将整个 git repo 输出到单个文件?

git rebase 丢失历史,那为什么要 rebase?

git rebase 分支与祖 parent