Comme on peut glaner deautremessages , la normalisation de fin de ligne de Git a ses avantages et ses inconvénients. J'ai un projet Windows uniquement où je pense que la meilleure chose à faire est de désactiver complètement la normalisation de fin de ligne. C'est-à-dire que je veux laisser toutes les nouvelles lignes (dont la plupart sont CRLF
) intactes, plutôt que de les faire normaliser à LF
- uniquement dans les coulisses, et je veux que ce changement affecte tous clones du référentiel sur toutes les machines. La question est le moyen le plus efficace de le faire.
La plupart des discussions sur la normalisation de fin de ligne de Git portent sur core.autocrlf
, et je pourrais atteindre mon objectif en définissant core.autocrlf=false
. Cependant, c'est un paramètre git-config, et je pense qu'il faut le définir séparément sur chaque machine par machine. Si cela est vrai, cela semble sujet aux erreurs, d'autant plus que le programme d'installation msysgit
guide l'utilisateur dans le paramétrage de core.autocrlf=true
.
Le meilleur moyen d'éviter d'avoir à définir core.autocrlf
séparément sur chaque machine semble vérifier un .gitattributes
fichier dans le référentiel contenant la ligne unique
* -text
Ou, si vous avez une ancienne version de Git,
* -crlf
Cela indique à Git que, pour tous les chemins (donc le *
), la normalisation de fin de ligne ne doit pas être tentée. Pour autant que je sache, cela ne devrait pas avoir d'autres effets secondaires. En particulier, il ne devrait pas modifier la façon dont les différences sont générées (cela a un attribut distinct diff
/-diff
) ou comment les fusions sont gérées (cela a un attribut distinct merge
/-merge
).
Pour plus de détails, je suggère ces ressources:
git help attributes
ou ne copie en ligne ), qui décrit en détail à la fois le fonctionnement de la normalisation de fin de ligne et les effets particuliers des différents attributs. (Probablement les plus pertinents sont text
, crlf
, diff
, merge
et binary
.)-text
ne signifie pas simplement "ceci est un fichier binaire".