Skip to content

Instantly share code, notes, and snippets.

@sometowngeek
Last active March 15, 2022 00:43
Show Gist options
  • Save sometowngeek/4d8005a2aac4b113b08db8ad44b9b7a2 to your computer and use it in GitHub Desktop.
Save sometowngeek/4d8005a2aac4b113b08db8ad44b9b7a2 to your computer and use it in GitHub Desktop.
Git Sparse Checkout example
(base) ➜ test-sparse-checkout git:(main) ✗ la
total 0
drwxr-xr-x 5 townie user 160 Mar 14 19:35 .
drwxr-xr-x 14 townie user 448 Mar 14 07:45 ..
drwxr-xr-x 13 townie user 416 Mar 14 07:35 .git
-rw-r--r-- 1 townie user 0 Mar 14 07:35 .gitignore
-rw-r--r-- 1 townie user 0 Mar 14 07:26 text.txt
# Clone a repo I want to sparse checkout
(base) ➜ test-sparse-checkout git:(main) ✗ git clone \
--depth 1 \
--filter=blob:none \
git@github.com:townie/my-project.git \
my-sparse-checkout-dir
Cloning into 'my-sparse-checkout-dir'...
# ...
(base) ➜ test-sparse-checkout git:(main) ✗ la
total 0
drwxr-xr-x 6 townie user 192 Mar 14 19:36 .
drwxr-xr-x 14 townie user 448 Mar 14 07:45 ..
drwxr-xr-x 13 townie user 416 Mar 14 07:35 .git
-rw-r--r-- 1 townie user 0 Mar 14 07:35 .gitignore
drwxr-xr-x 12 townie user 384 Mar 14 19:36 my-sparse-checkout-dir
-rw-r--r-- 1 townie user 0 Mar 14 07:26 text.txt
(base) ➜ test-sparse-checkout git:(main) ✗ cd my-sparse-checkout-dir
(base) ➜ my-sparse-checkout-dir git:(main) la
total 28
drwxr-xr-x 12 townie user 384 Mar 14 19:36 .
drwxr-xr-x 6 townie user 192 Mar 14 19:36 ..
drwxr-xr-x 13 townie user 416 Mar 14 19:36 .git
drwxr-xr-x 3 townie user 96 Mar 14 19:36 .github
-rw-r--r-- 1 townie user 930 Mar 14 19:36 .gitignore
-rw-r--r-- 1 townie user 2361 Mar 14 19:36 README.md
-rw-r--r-- 1 townie user 1378 Mar 14 19:36 build.gradle
drwxr-xr-x 3 townie user 96 Mar 14 19:36 gradle
-rw-r--r-- 1 townie user 5770 Mar 14 19:36 gradlew
-rw-r--r-- 1 townie user 2954 Mar 14 19:36 gradlew.bat
drwxr-xr-x 4 townie user 128 Mar 14 19:36 src
-rw-r--r-- 1 townie user 12 Mar 14 19:36 test.txt
# Set sparse checkout
(base) ➜ my-sparse-checkout-dir git:(main) git sparse-checkout set gradlew gradlew.bat
(base) ➜ my-sparse-checkout-dir git:(main) la
total 12
drwxr-xr-x 5 townie user 160 Mar 14 19:37 .
drwxr-xr-x 6 townie user 192 Mar 14 19:36 ..
drwxr-xr-x 14 townie user 448 Mar 14 19:37 .git
-rw-r--r-- 1 townie user 5770 Mar 14 19:36 gradlew
-rw-r--r-- 1 townie user 2954 Mar 14 19:36 gradlew.bat
# List sparse checkout
(base) ➜ my-sparse-checkout-dir git:(main) git sparse-checkout list
gradlew
gradlew.bat
# Disable sparse checkout
(base) ➜ my-sparse-checkout-dir git:(main) git sparse-checkout disable
# The output is expected because I just disabled the sparse-checkout
(base) ➜ my-sparse-checkout-dir git:(main) git sparse-checkout list
fatal: this worktree is not sparse
(base) ➜ my-sparse-checkout-dir git:(main) la
total 28
drwxr-xr-x 12 townie user 384 Mar 14 19:37 .
drwxr-xr-x 6 townie user 192 Mar 14 19:36 ..
drwxr-xr-x 14 townie user 448 Mar 14 19:37 .git
drwxr-xr-x 3 townie user 96 Mar 14 19:37 .github
-rw-r--r-- 1 townie user 930 Mar 14 19:37 .gitignore
-rw-r--r-- 1 townie user 2361 Mar 14 19:37 README.md
-rw-r--r-- 1 townie user 1378 Mar 14 19:37 build.gradle
drwxr-xr-x 3 townie user 96 Mar 14 19:37 gradle
-rw-r--r-- 1 townie user 5770 Mar 14 19:36 gradlew
-rw-r--r-- 1 townie user 2954 Mar 14 19:36 gradlew.bat
drwxr-xr-x 4 townie user 128 Mar 14 19:37 src
-rw-r--r-- 1 townie user 12 Mar 14 19:37 test.txt
(base) ➜ my-sparse-checkout-dir git:(main)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment