LFS no es la única respuesta
Git LFS resuelve un problema pero introduce otros: infraestructura extra, tarifas de hosting, y una dependencia del servidor que debe estar online para clones.
Almacenamiento de objetos con manifiestos
# assets.json
{
"logo.psd": {
"sha256": "8a1b...",
"url": "s3://my-bucket/assets/8a1b.psd"
}
}
aws s3 cp s3://my-bucket/assets/8a1b.psd ./logo.psd
git-annex
git annex init
git annex add big-file.psd
git commit -m "Add big-file via annex"
git annex copy --to=cloud-remote
DVC para datasets ML
dvc init
dvc add data/raw
git add data/raw.dvc .gitignore
git commit -m "Track raw dataset with DVC"
dvc push
Submódulos apuntando a un repo binario
git submodule add https://example.com/assets-repo assets
git commit -m "Add assets submodule"
Generación en tiempo de build
npm run build:assets
# .gitignore: dist/
Sparse checkout para clones parciales
git clone --filter=blob:none --sparse <url>
cd repo
git sparse-checkout set src docs
Eligiendo
- Pocos binarios, actualizaciones ocasionales → manifiesto de almacenamiento de objetos.
- Muchos binarios, historia profunda → git-annex o LFS.
- Datasets y modelos ML → DVC.
- Contenido generado → pipeline de build, no Git.