我对如何彻底清理我的垃圾感到有些困惑......
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
答案 0 :(得分:20)
C:\Users\VonC\prog\git\git>git log -Ssize-garbage|more
此节目commit 1a20dd4已Nguyễ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 page,jthill添加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}}