Por Anónimo (no verificado) , 29 Abril 2026

Fetching de objetos perezoso

Partial clone (--filter) permite a un clone omitir algunos objetos de la transferencia inicial, trayéndolos perezosamente cuando se necesiten. El remote promisor mantiene su promesa de proporcionarlos bajo demanda.

Especificaciones de filtro

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

Cómo funciona el fetching

git rev-list --objects --missing=allow-promisor HEAD | \
  awk '{print $1}' | git cat-file --batch-check
git fetch --refetch

Inspección

git config --get-all remote.origin.partialclonefilter
git rev-list --missing=print HEAD | head
git config --get extensions.partialClone

Advertencias

  • Operaciones como git log -p en toda la historia pueden disparar fetches masivos bajo demanda.
  • El uso desconectado es limitado — sin el promisor, los objetos faltantes fallan.
  • El servidor debe soportar partial clone (Git 2.22+; uploadpack.allowFilter=true).

Config del servidor

[uploadpack]
allowFilter = true
allowAnySHA1InWant = true

Combinar con sparse

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

Errores comunes

Usar --filter=tree:0 para trabajo de desarrollo — cada operación que necesita un tree lo trae bajo demanda.