git-commit-ectomy
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 .git
.
Enter the git surgeon. A git surgeon can remove such problematic commits and get the commit history back in shape.
Visit the Git College of Surgery on Github
the procedure
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
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
(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