В Git все новые объекты начинаются как "свободные" объекты. (Мне совершенно не понятно, почему вы получаете ошибку слишком много .)
Существует сантехническая команда git hash-object
, которая может создать новый объект любого типа. Другие команды в основном встроены в git hash-object
для нужного им типа (ов) объектов, например, git write-tree
создает некоторое количество объектов дерева, используя индекс, а git commit-tree
создает один объект фиксации. Использование git add
создает свободный объект для каждого добавленного файла; очевидно, в некоторых случаях это может быть много объектов.
Поэтому довольно легко создать большое количество незакрепленных объектов, но, как правило, команды Git, которые делают , также запускают git gc --auto
до pack автоматически. Как только они благополучно упакованы, git prune
удаляет незакрепленные:
Итак, я полагаю, git prune
- опасная операция, которая может разрушать вещи.
Это не особенно опасно, если вы запускаете его, ничего не делая (т.е. не запускаете команды Git, которая может активно создавать свободные объекты). Добавление --expire 14.days.ago
позволяет сохранить недавно созданные незакрепленные объекты, и это то, что делает git gc
- ну, он использует вашу настройку gc.pruneExpire
, но по умолчанию 14.days.ago
.
Если вы активно работаете над самим Git и вносите ошибку в программы упаковки, , тогда становится опасным. :-) В принципе, каждый раз, когда вы удаляете избыточность, вы должны быть уверены, что она действительно избыточна .