Почему wont 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 за комментарий, предлагающий очистить reflog!

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