Git remplace LF par CRLF

Git remplace LF par CRLF

Ces messages sont dus à une valeur par défaut incorrecte de core.autocrlf sous Windows.

Le concept d’autocrlf est de gérer les conversions de fin de ligne de manière transparente. Et il le fait !

Mauvaise nouvelle : la valeur doit être configurée manuellement.

Bonne nouvelle : cela ne doit être fait qu’une seule fois par installation de Git (un paramètre par projet est aussi possible).

Comment fonctionne autocrlf :

core.autocrlf=true:      core.autocrlf=input:     core.autocrlf=false:

     repository               repository               repository
      ^      V                 ^      V                 ^      V
     /        \               /        \               /        \
crlf->lf    lf->crlf     crlf->lf       \             /          \
   /            \           /            \           /            \

Ici crlf = marqueur de fin de ligne style Windows, lf = style Unix (également utilisé sur Mac depuis Mac OS X).

(Le cr pré-OSX n’est pas affecté pour aucune des trois options ci-dessus.)

Quand cet avertissement apparaît-il (sous Windows) ?

--  `autocrlf` = `true` si vous avez des `lf` de style Unix dans l'un de vos fichiers (= RAREMENT),

--  `autocrlf` = `input` si vous avez des `crlf` de style Windows dans l'un de vos fichiers (= presque TOUJOURS),

--  `autocrlf` = `false` -- JAMAIS !

Que signifie cet avertissement ?

L’avertissement “LF will be replaced by CRLF” dit que vous (ayant autocrlf=true) perdrez vos LF de style Unix après un cycle commit-checkout (ils seront remplacés par des CRLF de style Windows). Git ne s’attend pas à ce que vous utilisiez des LF de style Unix sous Windows.

L’avertissement “CRLF will be replaced by LF” dit que vous (ayant autocrlf=input) perdrez vos CRLF de style Windows après un cycle commit-checkout (ils seront remplacés par des LF de style Unix). N’utilisez pas input sous Windows.

Encore une autre façon de montrer comment fonctionne autocrlf

1) true:             x -> LF -> CRLF
2) input:            x -> LF -> LF
3) false:            x -> x -> x

x est soit CRLF (style Windows) soit LF (style Unix) et les flèches représentent

file to commit

*(Réponse tronquée)*