Почему мой репозиторий Git такой большой? - PullRequest
124 голосов
/ 23 июня 2009

145M = .git / objects / pack /

Я написал скрипт для суммирования размеров различий каждого коммита и коммита до того, как он вернется назад от вершины каждой ветви. Я получаю 129 МБ без сжатия и без учета одних и тех же файлов в филиалах и общей истории между филиалами.

Git принимает во внимание все эти вещи, поэтому я бы ожидал гораздо меньшего размера хранилища. Так почему .git такой большой?

Я сделал:

git fsck --full
git gc --prune=today --aggressive
git repack

Чтобы ответить, сколько файлов / коммитов, у меня есть 19 веток по 40 файлов в каждой. 287 коммитов, найдено с использованием:

git log --oneline --all|wc -l

Для хранения информации об этом не требуется 10 мегабайт.

Ответы [ 12 ]

1 голос
/ 08 ноября 2016

Это может произойти, если вы случайно добавили большой кусок файлов и поставили их на место, не обязательно фиксируя их. Это может произойти в приложении rails, когда вы запускаете bundle install --deployment, а затем случайно git add ., тогда вы видите все файлы, добавленные в vendor/bundle, вы удаляете их, но они уже попали в историю git, поэтому вы должны применить Ответ Vi и измените video/parasite-intro.avi на vendor/bundle, затем выполните вторую команду, которую он предоставляет.

Вы можете увидеть разницу с git count-objects -v, который в моем случае до применения скрипта имел размер пакета: 52 КБ, а после применения - 3,8 КБ.

1 голос
/ 09 сентября 2011

перед выполнением git filter-branch & git gc вы должны просмотреть теги, которые присутствуют в вашем репо. Любая реальная система, в которой есть автоматические теги для таких вещей, как непрерывная интеграция и развертывания, будет делать объекты без ссылок все еще привязанными к этим тегам, поэтому gc не может удалить их, и вы все равно будете удивляться, почему размер репо все еще так велик.

Лучший способ избавиться от ненужных вещей - запустить git-filter & git gc, а затем отправить master в новое голое хранилище. У нового голого репо будет зачищенное дерево.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...