`git gc` без объектов упаковки?

#git

#git

Вопрос:

Я хотел бы удалить objects ( .git/objects ) из моего репозитория, на которые больше не ссылаются никакие ссылки, но я не хочу упаковывать файлы для упаковки.

Я пытался git gc --no-prune , но он все равно удалил все объекты из моего репозитория и оставил только файлы пакетов ( git count-objects сообщает «0 объектов, 0 килобайт»).

Комментарии:

1. Чем то, что вы хотите, отличается от того, что git prune делает?

2. Упс, я не знал prune , спасибо. Хотите опубликовать это как ответ?

Ответ №1:

git gc является ли оболочкой для целого ряда небольших операций обслуживания:

  • git reflog expire
  • git repack
  • git prune-packed (на самом деле выполняется git repack автоматически при использовании -d )
  • git prune
  • любые другие, которые я, возможно, забыл

и git prune это тот, который специально удаляет объекты без ссылок. Обратите внимание, что это git gc указывает время истечения срока действия, чтобы git prune не удалять объекты без ссылок, которые все еще создаются. Если у вас нет активных команд Git, которые могли бы создавать объекты, и вы не хотите предоставлять льготный период gc по умолчанию, вам не нужно беспокоиться об этом.