Уменьшить размер репозитория git

Я пытался найти хороший учебник по уменьшению размера репо, но не нашел ни одного. Как мне уменьшить размер репо... это примерно 10 МБ, но дело в том, что Heroku позволяет только 50 МБ, и я почти не закончил разработку своего приложения.

Я добавил обычных подозреваемых (log, vendor, doc и т. Д.) В.gitignore. Хотя я только добавил.gitignore недавно.

Какие-либо предложения?

4 ответа

Решение

git gc --aggressiveэто один из способов заставить процесс чернослива иметь место (чтобы быть уверенным: git gc --aggressive --prune=now). У вас есть другие команды для очистки репо тоже. Не забывайте, хотя иногда git gc один может увеличить размер репо!

Может также использоваться после filter-branch, чтобы отметить некоторые каталоги, которые будут удалены из истории (с дальнейшим увеличением места); смотрите здесь. Но это означает, что никто не тянет из вашего публичного репо. filter-branch может хранить резервные ссылки в .git/refs/original, так что этот каталог тоже можно почистить.

Наконец, как уже упоминалось в этом комментарии и в этом вопросе; Очистка журнала может помочь:

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

Еще более полное и, возможно, опасное решение - удалить неиспользуемые объекты из репозитория git.

Спасибо за ваши ответы. Вот что я сделал:

git gc
git gc --aggressive
git prune

Это, казалось, сделало свое дело. Я начал с около 10,5 МБ, а теперь его чуть больше, чем 980 КБ.

В моем случае я отправил несколько больших (> 100 МБ) файлов, а затем приступил к их удалению. Но они все еще были в истории моего репо, поэтому мне пришлось удалить их и из него.

В чем был фокус:

bfg -b 100M  # To remove all blobs from history, whose size is superior to 100Mb
git reflog expire --expire=now --all
git gc --prune=now --aggressive

Затем вам нужно нажать на ветку:

git push origin <your_branch_name> --force

Примечание: bfg - это инструмент, который можно установить в Linux и macOS с помощью brew:

brew install bfg

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

Вы могли добавить один или несколько подмодулей, но в какой-то момент перестали их использовать, и некоторые файлы остались в каталоге. Чтобы удалить ненужные файлы подмодулей, см. Этот вопрос .

Однако, как и в случае с основным репозиторием, другой способ - перейти в каталог подмодуля в .git/modules, и выполните, например, git gc --aggressive --prune.

Они должны иметь хорошее влияние на размер репозитория, но пока вы используете подмодули Git, например, особенно с большими библиотеками, размер вашего репозитория не должен сильно меняться.

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