Par Anonyme (non vérifié) , 29 avril 2026

Pourquoi les binaires sont difficiles

Le modèle de stockage de Git est conçu pour le texte. Chaque commit stocke des instantanés complets.

Diff et merge

# .gitattributes
*.pdf binary
*.png binary
*.zip binary

Drivers de diff personnalisés

# .gitattributes
*.docx diff=docx
*.pdf diff=pdf

# ~/.gitconfig
[diff "docx"]
    textconv = pandoc --to=plain
[diff "pdf"]
    textconv = pdftotext -layout

Drivers de merge

Certains formats binaires peuvent être mergés avec des drivers personnalisés. Pour la plupart, marquez comme merge=ours ou merge=binary.

Réduire l'enflure du repo

  • Utilisez Git LFS pour les stocker hors des packs.
  • Ou générez-les au build et ignorez la source.
  • Ou stockez-les dans le stockage d'objets avec un manifeste dans Git.

Suivre les artefacts compilés

# .gitignore
dist/
build/
*.jar
*.class

Quand les binaires sont essentiels

git lfs install
git lfs track "*.psd"
git lfs track "models/*.bin"
git add .gitattributes
git commit -m "Track design and model files via LFS"

Détecter les binaires déjà dans l'historique

git rev-list --objects --all | \
  git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | \
  awk '/^blob/ {print $3, $4}' | \
  sort -n | tail -20

Nettoyer l'historique

git filter-repo --invert-paths --path bigfile.psd

Verrouiller des fichiers binaires

git lfs lock design/logo.psd
git lfs unlock design/logo.psd