Perform a git-commit-ectomy to forever remove problematic commits from your repo history.
This uses the git-forget-blob.sh script from @nachoparker.
what is this
This page covers how to perform a git-commit-ectomy. This is a procedure that removes problematic files or commits from your repository history.
For example, suppose the intern adds and commits a 1 GB
CSV file to your repository. After profusely apologizing,
the intern removes the 1 GB file, but the damage is done,
and the 1 GB file will forever bloat
Enter the git surgeon. A git surgeon can remove such problematic commits and get the commit history back in shape.
This surgical procedure can happen one of three ways:
Git-Commit-Ectomy the Easy Way: Single Branch
Complications: Dealing with Branches
Git-Commit-Ectomy the Hard Way: Cherry Picking
Oh Fuck: Please Send Backup
consult with your doctor
You should consult with your doctor to determine if a git-commit-ectomy is right for your repository.
This one-liner lists the 40 largest files in the repo
tail line to change the number):
$ git rev-list --all --objects | \ sed -n $(git rev-list --objects --all | \ cut -f1 -d' ' | \ git cat-file --batch-check | \ grep blob | \ sort -n -k 3 | \ \ tail -n40 | \ \ while read hash type size; do echo -n "-e s/$hash/$size/p "; done) | \ sort -n -r -k1