Von Gast (nicht überprüft) , 29 April 2026

Warum Binaries schwierig sind

Git's Storage-Modell ist fur Text designt.

Diff und Merge

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

Benutzerdefinierte Diff-Treiber

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

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

Merge-Treiber

Fur die meisten Bilder, Audio und Video ist "Merge" bedeutungslos.

Repo-Bloat reduzieren

  • Git LFS verwenden.
  • Zur Build-Zeit generieren.
  • In Object Storage speichern.

Compilierte Artefakte tracken

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

Wenn Binaries essenziell sind

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"

Bereits in Historie befindliche Binaries erkennen

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

Historie aufraumen

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

Binare Dateien sperren

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