Git:Git什么时候执行垃圾收集?

Git:Git什么时候执行垃圾收集?,git,version-control,garbage-collection,git-gc,Git,Version Control,Garbage Collection,Git Gc,我想知道:Git什么时候执行垃圾收集?我知道过去必须调用gitgc来手动启动垃圾收集,但现在它是自动完成的,什么时候 另外,在最新的Git版本中是否需要手动调用它?大部分答案都在: --自动 使用此选项,git gc检查是否需要任何内务管理;如果没有,它将退出而不执行任何工作。一些git命令在执行可能创建许多松散对象的操作后运行git gc--auto 如果存储库中有太多松散对象或太多包,则需要进行内务管理。如果松散对象的数量超过了gc.auto配置变量的值,则使用git repack-d-l将

我想知道:Git什么时候执行垃圾收集?我知道过去必须调用
gitgc
来手动启动垃圾收集,但现在它是自动完成的,什么时候


另外,在最新的Git版本中是否需要手动调用它?

大部分答案都在:

--自动

使用此选项,git gc检查是否需要任何内务管理;如果没有,它将退出而不执行任何工作。一些git命令在执行可能创建许多松散对象的操作后运行
git gc--auto

如果存储库中有太多松散对象或太多包,则需要进行内务管理。如果松散对象的数量超过了
gc.auto
配置变量的值,则使用
git repack-d-l
将所有松散对象组合成一个包。将
gc.auto
的值设置为0将禁用松散对象的自动打包

如果包的数量超过了
gc.autopacklimit
的值,则使用
git repack
-a
选项将现有包(标有
.keep
文件的包除外)合并为一个包。将
gc.autopacklimit
设置为0将禁用包的自动合并

这里唯一缺少的是解释哪些“某些”命令可能会运行
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 commit
相关问题: