Coding Stephan

Clone a BIG git repository

Wanted to clone a repository to do a quick text fix and create a pull request. Created the fork, and tried to clone. Cloning the repository took way longer than I’m used to.

Slow git clone

Shallow clone

I heard about shallow clone that supposed to only clone a single branch, and thus keep the clone fast.

git clone [remote-url] --branch [name] --single-branch [folder]

This didn’t work, cloning still took forever.

Clone with filter

Apparently the repository I was cloning, had a lot of large files in it. So I tried using a blob filter, set for 20Kb. Meaning the following command would skip downloading all files larger then 20Kb.

git clone --filter=blob:limit=20k [repo-url]
git clone --filter=blob:limit=20k https://github.com/svrooij/azure-docs.git

This seemed to be the work-around for this problem.

Large files in git (the right way)

The above repository just has all the large files in the repository, which obviously results in extreme long clone times. In 2015 they released git-lfs. This allows you to keep using git, but the large files (that you configured) will no longer be saved in the repository. The git history will just contain a reference to the large file that is saved outside of the repository.