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
Другие вопросы по тегам