Я чищу местное git-репо с большим количеством больших архивов в истории. Я сделал следующие шаги:
- Список всех файлов tarball в репозитории
FILE_LIST=`git rev-list master | while read rev; do git ls-tree -lr $rev | cut -c54- | sed 's/^ +//g;'; done | grep <tarball name> | awk '{print $2}' | sort | uniq | tr '\n' ' '`
Отметить их для удаления
git filter-branch --tag-name-filter cat --index-filter "git rm -r --cached --ignore-unmatch $FILE_LIST" --prune-empty -f -- --all
Сборка мусора
rm -rf .git/refs/original/ && git reflog expire --expire=now --all && git gc --aggressive --prune=now
Push
git push origin --force --all && git push origin --force --tags
Сделав это, я значительно уменьшил размер локального репо. Тем не менее, когда я получил чистый клон из источника после описанных выше шагов, размер клонированного репо не уменьшается, но эти большие архивы исчезают, проверяя
FILE_LIST=`git rev-list master | while read rev; do git ls-tree -lr $rev | cut -c54- | sed 's/^ +//g;'; done | grep <tarball name> | awk '{print $2}' | sort | uniq | tr '\n' ' '`
Я снова выполнил этап сбора мусорав клонированном репо размер не уменьшился.
Кто-нибудь знает, как я могу уменьшить размер репо на исходном сервере? Заранее спасибо.