Faules Objekt-Fetching
Partial Clone (--filter) ermoglicht es einem Klon, einige Objekte beim ersten Transfer wegzulassen und sie bei Bedarf nachzuladen.
Filter-Specs
git clone --filter=blob:none url
git clone --filter=blob:limit=1m url
git clone --filter=tree:0 url
git clone --filter=sparse:oid=<oid> url
Wie das Fetching funktioniert
git rev-list --objects --missing=allow-promisor HEAD | \
awk '{print $1}' | git cat-file --batch-check
git fetch --refetch
Inspektion
git config --get-all remote.origin.partialclonefilter
git rev-list --missing=print HEAD | head
git config --get extensions.partialClone
Vorbehalte
- Operationen wie
git log -puber die gesamte Historie konnen massive On-Demand-Fetches auslosen. - Disconnected-Verwendung ist begrenzt.
- Server muss Partial Clone unterstutzen (Git 2.22+).
Server-Konfiguration
[uploadpack]
allowFilter = true
allowAnySHA1InWant = true
Mit Sparse kombinieren
git clone --filter=blob:none --sparse https://example.com/big.git
cd big
git sparse-checkout init --cone --sparse-index
git sparse-checkout set apps/web
git checkout main
Haufige Fehler
--filter=tree:0 fur Entwicklungsarbeit verwenden.