Git垃圾收集似乎没有完全奏效

时间:2014-12-02 19:30:56

标签: git garbage-collection

我对如何彻底清理我的垃圾感到有些困惑......

git count-objects -v -H

warning: garbage found: ./objects/pack/gc_7174754666377259454.idx_tmp
warning: garbage found: ./objects/pack/gc_7174754666377259454.pack_tmp
warning: garbage found: ./objects/pack/pack-f5b13f50fe2e4d773028c51f547822e6f2fe720b.bitmap
count: 0
size: 0 bytes
in-pack: 32986
packs: 1
size-pack: 44.14 MiB
prune-packable: 0
garbage: 3
size-garbage: 41.20 MiB

这对我来说意味着我的回购中有41兆的垃圾?

git gc --prune = now --aggressive

Counting objects: 32986, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (31610/31610), done.
Writing objects: 100% (32986/32986), done.
Total 32986 (delta 23902), reused 9080 (delta 0)

当我再次运行计数对象时,我仍然使用

输出相同的输出
    size-garbage: 41.20 MiB

我只是手动删除垃圾文件吗?至少有一个人至少非常丰满。

12/02/2014  02:06 PM                 0 gc_7174754666377259454.idx_tmp
12/02/2014  02:06 PM        43,195,455 gc_7174754666377259454.pack_tmp
               2 File(s)     43,195,455 bytes
               0 Dir(s)  502,905,999,360 bytes free

1 个答案:

答案 0 :(得分:20)

C:\Users\VonC\prog\git\git>git log -Ssize-garbage|more

此节目commit 1a20dd4Nguyễn Thái Ngọc Duy (pclouds)为{8}引入了size-garbage git 1.8.3(2013年5月)

  

size-garbage:垃圾文件占用的磁盘空间,以KiB

表示      

count-objects:报告垃圾文件占用的磁盘空间

     

还会对宽松的垃圾发出警告,而不是由于错误而导致的错误   在report_garbage()

中使用count_objects()功能

garbage cleaning tip section提及:

  

要将回购大小降低到最低限度,您需要以下两个命令(两个命令本身都不能完成整个作业)。   另请注意“a”上的小写“repack”,它表示您要盲目丢弃无法访问的对象,而不是将它们保留为松散的对象。

git repack -adf     # kills in-pack garbage
git prune           # kills loose garbage

请在应用两个命令后再次尝试git count-objects -v -H


查看git repack man pagejthill添加in the comments

  

我更喜欢大 - A选项:

  

“与-a相同,除非使用-d   然后,前一个包中的任何无法到达的对象变成松散的,未包装的对象,而不是留在旧包中。“

  

Linus Torvalds认为-f gc --aggressive -f被过度使用 - so much so he suggested yanking the documentation for it。   (2007年)
  (--no-reuse-delta适用于git repack -Ad # kills in-pack garbage git prune # kills loose garbage

这意味着更有效的组合可能是:

{{1}}