Git Сборка мусора не работает полностью
Я немного запутался, как полностью вычистить мой мусор...
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 ответ
C:\Users\VonC\prog\git\git>git log -Ssize-garbage|more
Это шоу size-garbage
вывод был введен в коммите 1a20dd4 Нгуеном Тай Нгом Дуй ( pclouds
) для git 1.8.3 (май 2013)
size-garbage
: дисковое пространство, занимаемое мусорными файлами, в КиБ
count-objects
: сообщить, сколько дискового пространства занято мусорными файламиТакже выдают предупреждения о разболтанной одежде вместо ошибок в результате использования
report_garbage()
функция вcount_objects()
Этот раздел подсказок по очистке мусора упоминает:
Чтобы уменьшить размер репо до минимума, вам нужны обе следующие команды (ни одна из них сама по себе не выполняет всю работу).
Также обратите внимание на строчныеa
" на "repack
", который говорит, что вы хотите слепо отбрасывать недоступные объекты вместо того, чтобы держать их как свободные объекты.
git repack -adf # kills in-pack garbage
git prune # kills loose garbage
Так что попробуйте еще раз git count-objects -v -H
после применения обеих команд.
Глядя на git repack
Страница man, jthill добавляет в комментариях:
Я предпочитаю
A
опция:
"Такой же как
-a
если-d
используется.
Тогда любые недоступные объекты в предыдущем пакете становятся незакрепленными, распакованными объектами, а не остаются в старом пакете."
Линус Торвальдс утверждает, что
-f
лайкgc
"s--aggressive
слишком много - слишком много, поэтому он предложил вытащить документацию для него.
(в 2007)
(-f
для--no-reuse-delta
)
Это означает, что более эффективная комбинация может быть:
git repack -Ad # kills in-pack garbage
git prune # kills loose garbage