Уменьшить размер репозитория 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, например, особенно с большими библиотеками, размер вашего репозитория не должен сильно меняться.