Von Gast (nicht überprüft) , 29 April 2026

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 -p uber 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.