Git also has "partial" clones, which can avoid some of the downsides of shallow clones. You can, for example, filter out all historical objects (--filter=blob:none). Historical objects are fetched lazily as needed, such as checking out an old revision. The same can be done with unreachable trees.
This article has excellent diagrams that depict the different types of clones:
This article has excellent diagrams that depict the different types of clones:
https://github.blog/2020-12-21-get-up-to-speed-with-partial-...