我想知道:Git 什么时候执行垃圾收集?我知道过去必须调用git gc
手动启动垃圾收集,但现在它是自动完成的,什么时候?
另外,是否需要在最新的 Git 版本中手动调用它?
我想知道:Git 什么时候执行垃圾收集?我知道过去必须调用git gc
手动启动垃圾收集,但现在它是自动完成的,什么时候?
另外,是否需要在最新的 Git 版本中手动调用它?
大部分答案都在git gc
文档中:
--auto
使用此选项,git gc会检查是否需要进行任何内务处理;如果没有,它会退出而不执行任何工作。一些 git 命令
git gc --auto
在执行可能创建许多松散对象的操作后运行。如果存储库中有太多松散的对象或太多的包,则需要进行内务管理。如果松散对象的数量超过
gc.auto
配置变量的值,则所有松散对象使用git repack -d -l
. 将值设置gc.auto
为 0 将禁用松散对象的自动打包。如果包的数量超过 的值,则使用 的选项
gc.autopacklimit
将现有包(标有文件的包除外.keep
)合并为一个包。设置为 0 将禁用包的自动合并。-A
git repack
gc.autopacklimit
这里唯一缺少的是对哪些“某些”命令可能运行git gc --auto
以及何时运行的解释。这个列表可能会发生变化,但看看当前的 git 源,这些很突出:
git fetch
git merge
git receive-pack
git am
git rebase
(这是来自git grep -e --auto -- '*.c' '*.sh'
眼球 - 不包括所有t/
测试脚本和其他明显的错误命中)。如果你想要更深入的东西,git 的源代码在github.com
...
注意:使用 Git 2.17 (Q2 2018),您还需要考虑:
git commit