I followed the instructions from the first Google result for "big git objects pack size": http://naleid.com/blog/2012/01/17/finding-and-purging-big-files-from-git-history
Summary of how to create bigtosmall.txt
:
git rev-list --objects --all | sort -k 2 > allfileshas.txt```
git gc && git verify-pack -v .git/objects/pack/pack-*.idx | egrep "^\w+ blob\W+[0-9]+ [0-9]+ [0-9]+$" | sort -k 3 -n -r > bigobjects.txt```
for SHA in `cut -f 1 -d\ < bigobjects.txt`; do
echo $(grep $SHA bigobjects.txt) $(grep $SHA allfileshas.txt) | awk '{print $1,$3,$7}' >> bigtosmall.txt
done;
Removes the ./files
directory in the project root from each commit.
The last line clones a slimmed version of the repo to verify the smaller history size.
git clone https://github.com/iheanyi/bandcamp-dl
cd bandcamp-dl
git filter-branch --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch ./files' --tag-name-filter cat -- --all
cd ..
git clone --no-hardlinks file://`pwd`/bandcamp-dl bandcamp-dl-slim