“git gc”也运行“git repack”吗?

时间:2014-05-25 09:34:20

标签: git garbage-collection

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

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

" git repack"的联机帮助页和" git gc"不要提到两者之间的任何联系,以及" git repack"实际上包含这句话:

  

相反,松散的无法到达的物体将根据被修剪   正常的到期规则与下一个git gc调用。

这将向我表明" git gc"并不足以完成所有的管家工作和" git repack"也需要。这是正确的,git应该使用什么管家命令?

1 个答案:

答案 0 :(得分:8)

git repack只需重新包装对象。

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

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

有关详细信息,您还可以查看代码:在builtin / gc.c中,重新包装命令为preparedexecuted