Почему git не уменьшит размер хранилища?

У меня есть репозиторий только с одним коммитом, размер которого извлечен 95M. Однако я не могу получить размер папки.git ниже 213M. Однако, если я создаю новый репозиторий с тем же содержимым файла, я получаю папку.git всего 38M.

Есть ли способ, позволяющий git перестроить свои объекты таким образом, чтобы при создании нового репозитория размер соответствовал фигуре?

Я пробовал оба git gc --prune=now --aggressive а также git repack -adf --window=250 --depth=250 уменьшить размер хранилища. Они опустили хранилище с первоначального 220M.

Я предполагаю, что git должен хранить ссылки где-то, что предотвращает сборку мусора, но я не знаю, где они будут. Я удалил все пульты и ветки и не вижу ничего, кроме моей текущей ветки под 'refs'

$ ls -R .git/refs
.git/refs/:
heads  tags

.git/refs/heads:
master

.git/refs/tags:

Я создал хранилище из существующего с более длинной историей. я использовал checkout --orphan чтобы создать новую безосновательную ветвь, затем сделал коммит, чтобы создать новый коммит с состоянием репозитория. Затем я удалил оригинальную ветку и удалил пульты перед запуском gc,

$ git --version
git version 1.9.4.msysgit.0

1 ответ

Решение

Бег:

git reflog expire --all --expire=now
git gc --prune=now --aggressive

принес папку до 27M. Спасибо @torek за комментарий, предлагающий очистить журнал!

Я думал, что рефлог не был проблемой, потому что если я побежал git reflog Я видел только одну запись, мой единственный коммит. В ответ на предложение @ torek я обнаружил, как удалить неиспользуемые объекты из репозитория git? где я нашел команду для очистки reflog.

Другие вопросы по тегам