Por qué diffs personalizados
El diff predeterminado de Git es línea por línea de texto. Para formatos binarios (PDF, DOCX, imágenes) y texto estructurado donde los diffs por línea no son útiles (JS minificado, dumps SQL generados), los drivers de diff personalizados producen algo que los humanos pueden leer.
Drivers de lenguaje incorporados
# .gitattributes
*.py diff=python
*.rs diff=rust
*.go diff=golang
Definir un driver personalizado
[diff "exif"]
textconv = exiftool
cachetextconv = true
*.jpg diff=exif
*.png diff=exif
Diff a nivel de palabra para prosa
[diff "tex"]
wordRegex = "[^[:space:]\\\\]+"
Anular detección binaria
*.svg diff
*.pdf -diff
*.bin binary
Ejemplo real: dumps SQL
[diff "sqldump"]
textconv = "sed 's/^INSERT INTO/\\nINSERT INTO/g'"
Errores comunes
Drivers configurados en ~/.gitconfig son locales — los colegas no ven diff. Documenta la instalación.
Diff externo completo
GIT_EXTERNAL_DIFF=meld git diff
git config diff.tool meld
git difftool