Perform a git-commit-ectomy to forever remove problematic commits from your repo history.
This uses the git-forget-blob.sh script from @nachoparker.
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 .git
.
Enter the git surgeon. A git surgeon can remove such problematic commits and get the commit history back in shape.
Git College of Surgery on Github
This surgical procedure can happen one of four ways:
-
Git-Commit-Ectomy the Easy Way: Single Branch
-
Complications: Dealing with Branches
-
Transplants: Performing a Transplant with Patch
-
Oh F&!k: Please Send Backup
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
(modify the tail
line to change the number of items
returned):
$ 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