Git sparse-checkout
To checkout and work only with a subset/subtree of folders from a repo (yes, some people insist in economizing repos)
Initialize sparse-checkout config
git clone URL --no-checkout # add `--depth 1` to only include latest commit from all commit history
cd REPO_ROOT
git sparse-checkout init --cone # `--cone` to include root files
git checkout
Set existing folders to be actually checked out
git sparse-checkout add Apps/OtherApp # to add new folders to the current checkout list.
git sparse-checkout list # to get the set folders. can be run from any folder in the tree with same results
To create a new app (folder) in the repo and work with it, typical flow would be:
cd ROOT/Apps
mkdir OneMoreApp
git sparse-checkout add Apps/OneMoreApp
git sparse-checkout list # to confirm all the paths included
To operate the repo, just cd
into the desired App folder and git
commands go as expected.
cd App/OneMoreApp
git add .
git commit -m "-cool descriptive message"
git push origin master
When the repo goes outdated, just cd
into one of the folders and pull
.
cd App/AnyApp
git pull
The repo will update without downloading any unwanted file.
I haven’t tested how branching git branch
works with sparse-checkout, though!. So watch out for this.
Get rid of sparse-checkout
cd ROOT # not sure whether it's required, though..
git sparse-checkout disable