Le problème des fins de ligne
Windows utilise CRLF, Linux et macOS utilisent LF. Quand des développeurs sur des plateformes différentes commitent au même dépôt, les fichiers basculent et les diffs deviennent illisibles.
La configuration simple et robuste
# .gitattributes
* text=auto eol=lf
*.{cmd,bat,ps1} text eol=crlf
*.png binary
*.jpg binary
*.pdf binary
*.zip binary
Comment text=auto fonctionne
Au commit, Git regarde le contenu du fichier. Les fichiers texte apparents ont leurs fins de ligne normalisées en LF dans le dépôt.
Renormaliser des repos existants
git add --renormalize .
git commit -m "Normaliser les fins de ligne"
core.autocrlf versus .gitattributes
core.autocrlf- config par utilisateur..gitattributes- commité au repo.
Marquer les binaires
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.pdf binary
*.zip binary
*.tar binary
*.gz binary
*.dll binary
*.exe binary
Surcharges par fichier
Makefile text eol=lf
*.sh text eol=lf
*.bat text eol=crlf
*.ps1 text eol=crlf
*.csv text
Drivers de diff et merge
*.docx diff=docx
*.pdf diff=pdf
composer.lock merge=ours
Vérifier
git check-attr -a path/to/file
git ls-files --eol