Par Anonyme (non vérifié) , 29 avril 2026

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