"git gc"也运行"git repack"吗?

Rob*_*y75 5 git garbage-collection

我已经关闭了git令人讨厌的自动重新打包功能(我猜大多数git用户在使用git时都知道"重新打包以获得最佳性能"消息)而是在一夜之间用cronjob调用"git gc".

但是我不确定这是否足够,我是否也应该在"git gc"之前或之后运行"git repack".

"git repack"和"git gc"的联机帮助页没有提到两者之间的任何联系,"git repack"的联机帮助页实际上包含这个短语:

相反,松散的不可到达对象将根据正常的到期规则与下一个git gc调用进行修剪.

这将向我表明"git gc"不足以完成所有的管家任务,并且还需要"git repack".这是正确的,什么管家命令应该用于git?

mic*_*has 8

git repack 只是重新包装对象.

git gc 重新包装它们并抛弃旧的无法到达的物体.

要验证您可以执行find .git/objects之前和之后的操作git gc:在将所有新对象视为单独的文件之前.之后应该只有一个大包文件.

有关详细信息,您还可以查看代码:在builtin/gc.c中,准备执行 repack命令.