Git Sparse Checkout
At work we had a very large monorepo. I’m tempted to quote Douglas Adams here but the reference is good enough. Checking out the whole thing runs the possibility of confusing git status messages as a result changes in the other part of the tree. These messages are a distraction. Dealing with them can consume large amounts of time. The best way to avoid them perform what’s called a sparse checkout. This is a checkout that only puts what you need into your working directory. In a normal checkout:
$ git clone ...
You get the entire code base in your working directory. A sparse checkout is more complicated to perform:
$ mkdir _target directory_ $ cd _target directory_ $ git init . $ git config core.sparsecheckout true $ echo "_your desired subdir_" >> .git/info/sparse-checkout $ ## Repeat the echo for each directory you need. $ git remote add origin https://git.neopost.com/PPT/IBMHSM.git $ git fetch $ git checkout master
It’s eight steps but if you do it this way, you gain complete control over what’s in your working directory.