Created
September 15, 2021 06:28
-
-
Save maxrodrigo/8640621226261cbef1a13d0fc071a4e6 to your computer and use it in GitHub Desktop.
Prune Git Repository
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
FILE="$1" | |
git filter-branch --index-filter "git rm --cached --ignore-unmatch $FILE" --prune-empty --tag-name-filter cat -- --all | |
git for-each-ref --format="delete %(refname)" refs/original | git update-ref --stdin | |
git reflog expire --expire=now --all | |
git gc --prune=now |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/sh | |
# get temporary file to hold viewed object hashes | |
TF=$(mktemp) | |
trap "rm -f $TF" 0 1 2 3 15 | |
BIG=100000 # files up to (and including?) this size are not-big | |
git rev-list --all --topo-order --reverse | | |
while read commithash; do | |
git ls-tree -r $commithash | | |
while read mode type objhash path; do | |
[ $type == blob ] || continue # only look at files | |
blobsize=$(git cat-file -s $objhash) | |
[ $blobsize -le $BIG ] && continue # or -le | |
# found a big file - have we seen it yet? | |
grep $objhash $TF >/dev/null && continue | |
echo "$blobsize byte file added at commit $commithash as $path" | |
echo $objhash >> $TF # don't print again under any path name | |
done | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment