I have cleaned my repo with BFG Repo Cleaner using the following procedure:
$ git clone --mirror git://example.com/some-big-repo.git
$ java -jar bfg.jar --strip-biggest-blobs 500 some-big-repo.git
$ cd some-big-repo.git
$ git reflog expire --expire=now --all
$ git gc --prune=now --aggressive
$ git push
I can see that my local repo has shrunk with 1GB. Great. The problem that I'm having now and that I haven't been able to find any info on is that now I would like to also shrink the size of the GitHub-repo as well. How to achieve this?
git push
didn't work and I also tried git push origin --force --all
which gave me this error message: error: --all and --mirror are incompatible
remove the file from your project's current file-tree. remove the file from repository history — rewriting Git history, deleting the file from all commits containing it. remove all reflog history that refers to the old commit history. repack the repository, garbage-collecting the now-unused data using git gc.
Git LFS does not compress files. Some files are compressible, and some are not. It, like Git's partial clone feature, is designed to offload most of the data to a trusted server for the purposes of making local access lighter and cheaper.
My advice: don't worry too much about what GitHub reports as the repo size. For various reasons it won't accurately reflect the 'true' size of the repo.
What you really care about is the answer to this question:
The amount of data you have to download to do a fresh clone of your repo, and the amount of space it takes up on your disk, are the things you really care about (and nearly identical quantities). Try doing a fresh clone and seeing how much data gets transferred and how much room it takes up on your disk. It should match the size of your shrunken repo.
The number reported in the GitHub console (ie at https://github.com/settings/repositories, or in the GitHub API) is not really important to you, which is fortunate, because it enjoys a liberated and somewhat drunken relationship with the more important figure above, due to the use of Git Alternates, and git gc
occurring only periodically on GitHub servers.
Side note: Bitbucket can also take time to update reported repo size.
Just because you ran git gc
locally on your repo, doesn't mean GitHub have run it on their copy of your repo yet, and so their copy of your repo will appear much bigger for a while, even though when you clone it, only the 'essential' information is sent, and so you receive the smaller repo that you desire.
Full disclosure: I'm the author of the BFG Repo-Cleaner.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With