Shallow, Sparse, and Partial Clones

Git provides various ways to reduce the size of your working copy and speed up clone operations, especially useful when working with large repositories. This section covers three powerful strategies: shallow clones, sparse checkout, and partial clones.


1. Shallow Clones

Shallow clones let you clone a repository with a truncated history.

  • Only the latest commits (or a fixed depth) are downloaded.
  • Useful for CI/CD pipelines, temporary inspections, or testing.
  • Greatly reduces clone time and storage footprint.

Command:

git clone --depth 1 <repo-url>

You can also specify a deeper clone:

git clone --depth 50 <repo-url>

2. Sparse Checkout (Sparse Clones)

Sparse checkout allows you to check out only specific folders or paths from a repository after cloning.

  • Saves time and space when working on a subset of a large monorepo.
  • Combines well with blob filtering for advanced performance.

Commands:

git clone --filter=blob:none --sparse <repo-url>
cd <repo-name>
git sparse-checkout init --cone
git sparse-checkout set path/to/dir another/dir

You can later add more folders as needed using git sparse-checkout set.


3. Partial Clones

Partial clones allow you to fetch the full commit history but defer the download of file contents (blobs) until they're actually needed.

  • Great for large repositories with lots of binary files or rarely used assets.
  • Helps reduce initial clone size while preserving full version history.

Commands:

git clone --filter=blob:none <repo-url>

When accessing a file that hasn’t been downloaded yet, Git will fetch it on-demand.


Summary

Clone StrategyHistory IncludedFile Contents DownloadedIdeal Use Case
Shallow ClonePartial (limited)Full (latest snapshot)CI pipelines, quick testing
Sparse CheckoutFullSelected directoriesWorking in part of a monorepo
Partial CloneFullOn-demand (lazy load)Large repos with binaries or infrequent files