Обновление: git prune
"решит" проблему, поскольку удалит те, объекты
(git gc
вызывает git prune
, но только для отдельных объектов старше двух недель, по умолчанию).
Однако, как отмечает в комментариях ОП Майкл Донохью:
Мне действительно нравится аспект безопасности, заключающийся в том, чтобы хранить незакрепленные предметы в течение двух недель, если я захочу вернуться и посмотреть некоторые старые версии, поэтому мне не очень нравится это решение.
У меня нет проблем с размер или производительность git, это просто git gui настаивает на том, чтобы просить меня сжать базу данных, даже если сжатие базы данных не даст никакого эффекта.
Оригинальный ответ:
О проблеме "git gc
" не удаления всех незакрепленных объектов сообщалось ранее (конец 2008 г., "" _ 5_ ", похоже, больше не удаляет незакрепленные объекты"
git gc
удаляет только незакрепленные объекты старше двух недель, если вы действительно хотите удалить их сейчас, запустите git prune.
Но убедитесь, что никакой другой процесс git не может быть активен, когда вы его запускаете, или он может наступить на что-то.
"git gc
" распакует объекты, которые стали недоступны и в данный момент находились в пакетах.
В результате объем дискового пространства, используемого репозиторием git, может фактически увеличиться вверх strong > Резко после операции «git gc
», которая может быть неожиданностью для человека, который почти полностью работает в своей файловой системе, удаляет несколько веток из репозитория отслеживания, а затем выполняет операцию «git gc
», что может стать очень неприятным сюрпризом.
[
Пример: ]
Старые ветки зарезервированы с помощью тега, например next-20081204
.
Если вы обновляете локальную копию linux-next
репозитория каждый день, вы будете накапливать большое количество этих старых тегов веток.
Если вы затем удалите их целую серию и запустят git-gc
, операция займет довольно много времени, и количество используемых блоков и индексных дескрипторов значительно вырастет.
Они исчезнут после «git prune
», но когда я выполняю эту служебную операцию, я часто хотел, чтобы --yes-I-know-what-I-am-doing-and-it's-unsafe-but-just-drop-the-unreachable-objects-cause-this-is-just-a-tracking-repository
была опция «git gc».
Итак, в вашем случае было бы полезно использовать «git prune
»?
(возможно, с использованием «сейчас» в переменной конфигурации gc.pruneexpire
, необходимого для выполнения вышеуказанного поведения).
У вас также есть (из той же ветки):
repack -a -d -l
Обратите внимание на строчную букву «а».
git-gc
вызывает repack с прописной буквой «A», что вызывает распаковку недоступных объектов. Маленькая буква «а» предназначена для людей, которые знают, что делают, и хотят, чтобы git просто отбрасывал недостижимые объекты.
person
VonC
schedule
10.07.2009