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

El problema de los finales de línea

Windows usa CRLF, Linux y macOS usan LF. Cuando desarrolladores en plataformas diferentes hacen commit al mismo repositorio, los archivos cambian de un lado a otro y los diffs se vuelven ilegibles.

La configuración simple y robusta

# .gitattributes
* text=auto eol=lf

*.{cmd,bat,ps1} text eol=crlf

*.png binary
*.jpg binary
*.pdf binary
*.zip binary

Cómo funciona text=auto

En commit, Git mira el contenido del archivo. Los archivos de texto aparentes tienen sus finales de línea normalizados a LF en el repositorio.

Renormalizar repos existentes

git add --renormalize .
git commit -m "Normalizar finales de línea"

core.autocrlf vs .gitattributes

  • core.autocrlf - configuración por usuario.
  • .gitattributes - commiteado al repo.

Marcar binarios

*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.pdf binary
*.zip binary
*.tar binary
*.gz binary
*.dll binary
*.exe binary

Anulaciones por archivo

Makefile     text eol=lf
*.sh         text eol=lf
*.bat        text eol=crlf
*.ps1        text eol=crlf
*.csv        text

Drivers de diff y merge

*.docx diff=docx
*.pdf diff=pdf
composer.lock merge=ours

Verificar

git check-attr -a path/to/file
git ls-files --eol