Брэндон Томсон спросил в комментарии к решению Rainer Blome , если это просто исправило представление gitk или если ссылки действительно исчезнут. Хороший способ проверить это - вспомнить один из хэшей sha1 (или его уникальный префикс) старых коммитов и попробовать
$ git ls-tree hash-value
Это должно показать вам содержимое основной папки репозитория, как это было в этом коммите. После
$ rm -Rf .git/refs/original
$ rm -Rf .git/logs/
как показано VonC и удаление линий refs/original/…
из .git/info/refs
и .git/packed-refs
, как показано Rainer Blome , окончательный
$ git gc --prune=now
убрал не только ссылки, но и старые объекты (коммиты, деревья и капли). Показанное выше git ls-tree hash-value
доказывает это.
Еще одна приятная команда для проверки этого - git count-objects -v
(запустите ее перед фильтром-брахом и после обрезки и сравните размер).
Примечание: Поскольку мне пока не разрешено комментировать другие ответы, мне пришлось написать новый, хотя в основном он объединяет предыдущие ответы.