Если вы уверены, , что никакая другая команда Git не выполняется в этом хранилище во время запуска git gc
в этом хранилище, вы можете добавить --prune=all
.По умолчанию --prune=2.weeks.ago
, что дает другим работающим командам 14 дней для завершения своей работы;например, вы можете использовать --prune=1.day.ago
, чтобы дать им меньше времени.
Вы также можете настроить gc.pruneExpire
: если не задано, по умолчанию используется 2.weeks.ago
, что и дает вышеуказанное значение по умолчанию.Как отмечает j6t , вариант установки gc.pruneExpire
этого значения now
, а не all
.Однако здесь неразумно устанавливать now
: автоматический git gc
будет использовать это значение , а будет работать в фоновом режиме, тогда как другие операции Git будут выполняться.
Обратите внимание, что если у вас естьверсия Git> = 2.5, но ниже 2.15.0, уменьшенная gc.pruneExpire
может сломать добавленные рабочие деревья за меньшее время, чем две недели по умолчанию.Ошибка заключается в том, что git gc
не может использовать HEAD
и индекс добавленного рабочего дерева в качестве отправной точки для обхода достижимости объекта DAG.В результате, git gc
может удалить добавленные BLOB-объекты, которые еще не были зафиксированы, и, если у вас есть рабочее дерево с отключенным HEAD, даже некоторые коммиты. лучшее исправление для этого заключается в обновлении до 2.15.0 или более поздней версии, поскольку даже двухнедельного значения по умолчанию не обязательно достаточно.