El lenguaje de filtros
Los filtros de partial clone se especifican mediante strings DSL cortos. Cada filtro excluye objetos que coinciden con la spec de la transferencia.
Filtros comunes
blob:none— omitir todos los blobs.blob:limit=<n>[kmg]— omitir blobs mayores que el umbral.tree:<depth>— omitir trees más profundos que depth.sparse:oid=<blob>— usar una spec sparse-checkout almacenada como blob.object:type=tag— excluir objetos de un tipo (Git 2.36+).combine:F1+F2+...— combinar múltiples filtros con URL-encoding.
Ejemplos
git clone --filter=blob:none url big-no-blobs
git clone --filter=blob:limit=10m url big-small-blobs
git clone --filter=tree:0 --no-checkout url history-only
git clone --filter=combine:blob:none+tree:0 url metadata-only
Elegir un filtro
| Caso de uso | Filtro |
|---|---|
| Desarrollo diario en un subconjunto | blob:none + sparse-checkout |
| CI para una app específica | blob:none + sparse-checkout cono |
| Solo análisis de historia | tree:0 |
| Archivos multimedia grandes separados | blob:limit=10m |
| Despliegue release de solo lectura | blob:none + checkout un tag |
Filtro sparse
blob_oid=$(git hash-object .sparse)
git clone --filter=sparse:oid=$blob_oid url
Combinar
git clone --filter=combine:blob%3Anone+tree%3A0 url
Verificar
git config --get remote.origin.partialclonefilter
git rev-list --missing=print HEAD | wc -l
du -sh .git/objects
Errores comunes
Usar tree:0 para desarrollo activo. Olvidar que blob:limit es por blob, no agregado.