env:
- Windows 7
- msysgit
Wheng I git commit
, il dit:
warning: LF will be replaced by CRLF.
Cet avertissement est-il en arrière?
J'édite un fichier dans Windows, la fin de la ligne est CRLF
, tout comme cette image:
Et git le change LF
pour la validation du dépôt.
Je pense donc que l'avertissement correct est:
warning: CRLF will be replaced by LF.
Réponses:
Selon l'éditeur que vous utilisez, un fichier texte avec LF ne serait pas nécessairement enregistré avec CRLF: les éditeurs récents peuvent conserver le style eol. Mais ce paramètre de configuration git insiste pour changer ceux-ci ...
Assurez-vous simplement que (comme je le recommande ici ):
De cette façon, vous évitez toute transformation automatique et pouvez toujours les spécifier via un
.gitattributes
fichier et descore.eol
directives .Non: vous êtes sous Windows et la
git config
page d'aide mentionneComme décrit dans " git remplaçant LF par CRLF ", cela ne devrait se produire qu'au moment de la vérification (pas de validation), avec
core.autocrlf=true
.Comme mentionné dans la réponse de XiaoPeng , cet avertissement est le même que:
Comme mentionné dans le
git-for-windows/git
numéro 1242 :Remarque: Git 2.19 (septembre 2018), lors de l'utilisation
core.autocrlf
, le faux avertissement "LF sera remplacé par CRLF" est maintenant supprimé .Comme quaylar à juste titre les commentaires , s'il y a une conversion lors de la validation, il est à
LF
seulement.Cet avertissement spécifique "
LF will be replaced by CRLF
" provient de convert.c # check_safe_crlf () :Il est appelé par
convert.c#crlf_to_git()
, lui-même appelé parconvert.c#convert_to_git()
, lui-même appelé parconvert.c#renormalize_buffer()
.Et ce dernier
renormalize_buffer()
n'est appelé que parmerge-recursive.c#blob_unchanged()
.Je soupçonne donc que cette conversion ne se produit
git commit
que si ledit commit fait partie d'un processus de fusion.Remarque: avec Git 2.17 (Q2 2018), un nettoyage de code ajoute quelques explications.
Voir commit 8462ff4 (13 janvier 2018) de Torsten Bögershausen (
tboegi
) .(Fusionné par Junio C Hamano -
gitster
- in commit 9bc89b1 , 13 févr.2018 )Notez qu'une régression introduite dans 8462ff4 ("
convert_to_git()
:safe_crlf/checksafe
devientint conv_flags
", 2018-01-13, Git 2.17.0) dans le cycle Git 2.17 a provoqué desautocrlf
réécritures pour produire un message d'avertissement malgré le réglagesafecrlf=false
.See commit 6cb0912 (04 juin 2018) par Anthony Sottile (
asottile
) .(Fusionné par Junio C Hamano -
gitster
- in commit 8063ff9 , 28 juin 2018)la source
core.autocrlf=true
cédera toujours en LF dans le repo, et CRLF dans l'arborescence de travail à mon humble avis (même sous non Windows). Source: linkOUI l'avertissement est à l'envers.
Et en fait, cela ne devrait même pas être un avertissement en premier lieu. Parce que tout cet avertissement dit (mais à l'envers malheureusement) est que les caractères CRLF dans votre fichier avec les fins de ligne Windows seront remplacés par LF lors de la validation. Ce qui signifie qu'il est normalisé aux mêmes fins de ligne que celles utilisées par * nix et MacOS.
Rien d'étrange ne se passe, c'est exactement le comportement que vous souhaiteriez normalement.
Cet avertissement dans sa forme actuelle est l'une des deux choses suivantes:
;)
la source
--Mise à jour le 9 juillet ---
Suppression de "C'est correct et précis" comme l'a commenté @mgiuca
======
NON . Il ne parle PAS de vos fichiers actuellement avec
CRLF
. Il s'agit plutôt de fichiers avecLF
.Il devrait lire:
Cette image devrait expliquer ce que cela signifie.
la source
Tout cela suppose
core.autocrlf=true
Erreur d'origine:
Ce que l'erreur DEVRAIT lire:
Explication ici :
Fondamentalement, un fichier local qui était auparavant LF aura désormais CRLF localement
la source
git config --global core.autocrlf false
fonctionne bien pour les paramètres globaux.Mais si vous utilisez Visual Studio, vous devrez peut-être également modifier
.gitattributes
pour certains types de projets ( par exemple, une application de bibliothèque de classes c # ):* text=auto
la source
Après avoir défini,
core.autocrlf=true
j'obtenais "LF sera remplacé par CRLF" (notez pas "CRLF sera remplacé par LF") lorsque j'utilisaisgit add
(ou peut-être était-ce activégit commit
?) Des fichiers modifiés dans Windows sur un référentiel (qui utilise LF) qui a été vérifié avant mon départcore.autocrlf=true
.J'ai effectué un nouveau paiement avec
core.autocrlf=true
et maintenant je ne reçois pas ces messages.la source
Si vous utilisez Visual Studio 2017, 2019, vous pouvez:
la source
.gitconfig
ou.git/config
, non.gitignore
, qui spécifie les fichiers à ignorer par git.Faites juste une chose simple:
la source