Da Anonimo (non verificato) , 29 Aprile 2026

Perche i binari sono difficili

Il modello di storage di Git e progettato per il testo. Modifica un'immagine da 50 MB una volta e hai aggiunto 50 MB al repo.

Diff e merge

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

Driver diff personalizzati

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

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

Driver di merge

Per la maggior parte di immagini, audio e video, "merge" e privo di senso.

Ridurre il bloat del repo

  • Usare Git LFS.
  • Generare al build time.
  • Memorizzare in object storage.

Tracciare artefatti compilati

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

Quando i binari sono essenziali

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"

Rilevare binari gia in storia

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

Pulire la storia

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

Lock di file binari

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