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)

И когда я снова запускаю объекты count, у меня все еще есть тот же вывод с

    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 Nguyễn Thái Ngọc Duy (pclouds) для git 1.8.3 (май 2013)

size-garbage: дисковое пространство, потребляемое файлами мусора, в KiB

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 справочная страница, jthill добавляет в комментариях:

Я предпочитаю вариант big- a:

"То же, что и -a, если не используется -d.
Тогда любые недостижимые объекты в предыдущем пакете становятся свободными, распакованными объектами, а не остаются в старом пакете."

Линус Торвальдс утверждает, что -f как gc --aggressive многократно используется - настолько, что он предложил выдернуть документацию для него.
(в 2007 году)
(-f для --no-reuse-delta)

Это означает, что более эффективная комбинация может быть:

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