Ces messages sont dus à une valeur par défaut incorrecte de core.autocrlfsous Windows.
Le concept de autocrlfest de gérer les conversions de fin de ligne de manière transparente. Et c'est le cas!
Mauvaise nouvelle : la valeur doit être configurée manuellement.
Bonne nouvelle : cela ne devrait être fait qu'une seule fois par installation git (par paramètre de projet est également possible).
Comment ça autocrlfmarche :
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repo repo repo
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
Ici crlf= marqueur de fin de ligne de style gagnant, lf= style unix (et mac osx).
(pré-osx crn'est pas affecté pour l'une des trois options ci-dessus)
Quand cet avertissement apparaît-il (sous Windows)
- autocrlf= truesi vous avez un style unix lfdans l'un de vos fichiers (= RAREMENT),
- autocrlf= inputsi vous avez un style win crlfdans l'un de vos fichiers (= presque TOUJOURS),
- autocrlf= false- JAMAIS!
Que signifie cet avertissement
L'avertissement " LF sera remplacé par CRLF " indique que vous (ayant autocrlf= true) perdrez votre LF de style Unix après le cycle de validation de validation (il sera remplacé par CRLF de style Windows). Git ne s'attend pas à ce que vous utilisiez le LF de style Unix sous Windows.
L'avertissement " CRLF sera remplacé par LF " indique que vous (ayant autocrlf= input) perdrez votre CRLF de style Windows après un cycle de validation de validation (il sera remplacé par LF de style Unix). Ne pas utiliser inputsous les fenêtres.
Encore une autre façon de montrer comment ça autocrlfmarche
1) true: x -> LF -> CRLF
2) input: x -> LF -> LF
3) false: x -> x -> x
où x est CRLF (style Windows) ou LF (style Unix) et les flèches représentent
file to commit -> repository -> checked out file
Comment réparer
La valeur par défaut pour core.autocrlfest sélectionnée lors de l'installation de git et stockée dans gitconfig ( %ProgramFiles(x86)%\git\etc\gitconfig) à l' échelle du système . Il y a aussi (en cascade dans l'ordre suivant):
- gitconfig "global" (par utilisateur) situé à ~/.gitconfig, encore un autre
- gitconfig "global" (par utilisateur) à $XDG_CONFIG_HOME/git/configou $HOME/.config/git/configet
- gitconfig "local" (par repo) à .git/configdans le répertoire de travail.
Donc, écrivez git config core.autocrlfdans le répertoire de travail pour vérifier la valeur actuellement utilisée et
- ajouter autocrlf=falseà l'ensemble du système gitconfig # solution par système
- git config --global core.autocrlf false # solution par utilisateur
- git config --local core.autocrlf false # solution par projet
Avertissements
- les git configparamètres peuvent être remplacés par les gitattributesparamètres.
- la crlf -> lfconversion ne se produit que lors de l'ajout de nouveaux fichiers, les crlffichiers déjà existants dans le référentiel ne sont pas affectés.
Moral (pour Windows):
- utilisez core.autocrlf= truesi vous prévoyez d'utiliser également ce projet sous Unix (et ne souhaitez pas configurer votre éditeur / IDE pour utiliser les fins de ligne unix),
- utilisez core.autocrlf= falsesi vous prévoyez d'utiliser ce projet sous Windows uniquement ( ou vous avez configuré votre éditeur / IDE pour utiliser les fins de ligne unix),
- n'utilisez jamaiscore.autocrlf = inputsauf si vous avez une bonne raison de le faire ( par exemple, si vous utilisez des utilitaires unix sous Windows ou si vous rencontrez des problèmes de makefiles),
PS Que choisir lors de l'installation de git pour Windows?
Si vous n'utilisez aucun de vos projets sous Unix, n'acceptez pas la première option par défaut. Choisissez le troisième ( Checkout as-is, commit as-is ). Vous ne verrez pas ce message. Déjà.
PPS Ma préférence personnelle est de configurer l' éditeur / IDE pour utiliser des terminaisons de style Unix et de le paramétrer core.autocrlfsur false.