Andy Callaghan

Cleaning up local git repos

We often get to a point where we have billions of local git repositories that have been merged already, or abandoned - it's often difficult to see the wood from the trees.

Prune remote tracking branches

{% highlight bash %} git fetch --prune {% endhighlight %}

This only deletes the remote references to these branches, if they have been deleted on origin - it doesn't delete them locally. It does however clean-up views you get of the current code, and removes some git cruft locally.

Delete local branches that have been merged

git branch -d $(git branch --merged=master | grep -v master)

Since master merges into itself, we need to exclude it from the run.

Garbage collect loose ends

git gc

Read more about git gc here. A simple run through of any unreferenced objects and unnecessary files to speed up merges and pushes.

You're supposed to run this 'regularly', apparently...