145M = .git/objects/pack/
I wrote a script to add up the sizes of differences of each commit and the commit before it going backwards from the tip of each branch. I get 129MB, which is without compression and without accounting for same files across branches and common history among branches.
Git takes all those things into account so I would expect much much smaller repository. So why is .git so big?
git fsck --full
git gc --prune=today --aggressive
git log --oneline --all|wc -l
I recently pulled the wrong remote repository into the local one (
git remote add ... and
git remote update). After deleting the unwanted remote ref, branches and tags I still had 1.4GB (!) of wasted space in my repository. I was only able to get rid of this by cloning it with
git clone file:///path/to/repository. Note that the
file:// makes a world of difference when cloning a local repository - only the referenced objects are copied across, not the whole directory structure.
Edit: Here's Ian's one liner for recreating all branches in the new repo:
d1=#original repo d2=#new repo (must already exist) cd $d1 for b in $(git branch | cut -c 3-) do git checkout $b x=$(git rev-parse HEAD) cd $d2 git checkout -b $b $x cd $d1 done