LFS n'est pas la seule réponse
Git LFS résout un problème mais en introduit d'autres : infrastructure supplémentaire, frais d'hébergement.
Stockage d'objets avec manifestes
# 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 pour datasets ML
dvc init
dvc add data/raw
git add data/raw.dvc .gitignore
git commit -m "Track raw dataset with DVC"
dvc push
Submodules pointant vers un repo binaire
git submodule add https://example.com/assets-repo assets
git commit -m "Add assets submodule"
Génération au build
npm run build:assets
# .gitignore: dist/
Sparse checkout pour clones partiels
git clone --filter=blob:none --sparse <url>
cd repo
git sparse-checkout set src docs
Choisir
- Peu de binaires → manifeste de stockage d'objets.
- Beaucoup de binaires → git-annex ou LFS.
- Datasets et modèles ML → DVC.
- Contenu généré → pipeline de build, pas Git.