Por Anónimo (no verificado) , 29 Abril 2026

Por qué los binarios son difíciles

El modelo de almacenamiento de Git está diseñado para texto. Cada commit almacena instantáneas completas de objetos.

Diff y merge

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

Drivers de diff personalizados

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

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

Drivers de merge

Algunos formatos binarios pueden mergearse con drivers personalizados. Para la mayoría, marca como merge=ours o merge=binary.

Reducir bloat del repo

  • Usa Git LFS para almacenarlos fuera de los archivos pack.
  • O genéralos en tiempo de build e ignora la fuente.
  • O almacénalos en object storage con un manifiesto en Git.

Rastrear artefactos compilados

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

Cuando los binarios son esenciales

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"

Detectar binarios ya en la historia

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

Limpiar la historia

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

Bloquear archivos binarios

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