DavidP6
DavidP6

Reputation: 317

Managing .git file size

My .git file has grown to 229Mb and I wondering what the best way to cut down the size is. I know about git gc and have been using it a fair amount. I'm not totally sure about how git works, but I know that there is packaged information in there that I no longer need. Like, I know I no longer need the first five branches saved. Is there a way to completely erase really old branches or commits or something like that?

Upvotes: 10

Views: 6001

Answers (4)

Peter Tillemans
Peter Tillemans

Reputation: 35331

The easiest would be to do a

git clone --depth 1 your_old_repo

on a new location and then swap it back in place.

see also git faq

Upvotes: 1

VonC
VonC

Reputation: 1323115

You have some techniques in "Reduce git repository size", but I mention also in it than git gc alone can increase the size of the repo!

So some filter branch (also referenced in that question) can be needed, if nobody is actively pulling from your repo.

One factor which tends to increase rapidly the size of a Git repo is the versioning of too many binaries. It is one of Git limits, so try to:

  • version such large object in their own Git repo, referenced as submodules
  • or version them in an external repository made for deliveries, like a Maven repository (i.e. "not in a Git repo")

Upvotes: 2

Jeet
Jeet

Reputation: 39787

If you want to keep your (reachable) commit history intact, then expire, repack, prune, and garbage collect:

git reflog expire --expire=0 --all
git repack -ad
git prune 
git gc

This should be the minimal size you can get your repo and keep your commit history.

If not, i.e., you want or do not mind starting afresh with the current state of the repo as the initial commit, then Peter Tillemans' approach will do it.

Upvotes: 15

Rob Wilkerson
Rob Wilkerson

Reputation: 41236

I'd do a bit of garbage collecting with git gc

Upvotes: 1

Related Questions