Avec Git, comment désactiver l'avertissement "LF sera remplacé par CRLF"


154

Avec Git, lors de l'utilisation de autocrlf = true indicateur, un avertissement est toujours donné lorsque les fins de ligne sont modifiées.

Je comprends à quoi sert l'avertissement et comment désactiver l'indicateur de fin de ligne, mais comment désactiver l'avertissement lui-même?


Toutes les réponses ici sont obsolètes - après que git a introduit gitattributes. Safecrlf est votre ami autocrlf n'est pas! S'il vous plaît voir ma réponse
Rusi

Réponses:


282

Vous pouvez désactiver l'avertissement avec

git config --global core.safecrlf false

(Cela désactivera uniquement l'avertissement, pas la fonction elle-même.)


est-ce que la désactivation de l'avertissement empêchera git de remplacer lf par crlf? @chronial
aidonsnous

3
@aidonsnous De git docs : Si core.safecrlf est défini sur "true" ou "warn", git vérifie si la conversion est réversible pour le paramètre actuel de core.autocrlf. Pour "true", git rejette les conversions irréversibles; pour "warn", git n'affiche qu'un avertissement mais accepte une conversion irréversible. Si vous n'avez pas besoin de rejeter les conversions irréversibles, définir core.safecrlf sur false supprime l'avertissement, mais effectue toujours une conversion automatique.
Danny Libin

5

Vous devez utiliser core.autocrlf inputet core.eol input. Ou simplement ne laissez pas git changer les fins de ligne du tout avec autocrlf falseet débarrassez-vous de la mise en évidence des crlfs dans les diffs, etc. avec core.whitespace cr-at-eol.

J'espère que cela t'aides


Habituellement, vous voulez que vos scripts BAT se terminent et soient validés avec CRLF, et votre script SH avec LF.
Sandburg

0

Vous recherchez l' core.whitespaceoption (voirgit config --help pour plus de détails).

Vous pouvez définir cette option comme ceci:

$ git config core.whitespace cr-at-eol

0

J'ai utilisé de cette façon:

Enregistrez vos fichiers actuels dans Git, afin qu'aucun de votre travail ne soit perdu.

git add . -u
git commit -m "Saving files before refreshing line endings"

Supprimez chaque fichier de l'index de Git.

git rm --cached -r .

Réécrivez l'index Git pour récupérer toutes les nouvelles fins de ligne.

git reset --hard

Ajoutez à nouveau tous vos fichiers modifiés et préparez-les pour une validation. C'est votre chance d'inspecter quels fichiers, le cas échéant, n'ont pas été modifiés.

git add .
# It is perfectly safe to see a lot of messages here that read
# "warning: CRLF will be replaced by LF in file."

Validez les modifications dans votre référentiel.

git commit -m "Normalize all the line endings"

https://help.github.com/articles/dealing-with-line-endings/


13
Je crois que l'OP essayait d'éviter de voir ces avertissements. Ne normalisez pas toutes les fins de ligne.
Mike Cluck

git rm --cached -r . && git reset --hardsemble faire l'affaire, merci
Shanimal

0

Curieusement, j'avais appliqué les deux configurations comme expliqué ici, et mon fichier .gitconfig contenait ces 2 lignes:

[core]
       autocrlf = false
       whitespace = cr-at-eol

Pourtant, j'ai reçu l'avertissement. Maintenant, juste pour essayer, j'ai commenté les deux lignes et l'avertissement a effectivement disparu. Je ne sais pas pourquoi je les ai mis en premier lieu cependant ...


0

La définition de "core.safecrlf false" fonctionne. Cependant, après avoir changé la valeur en «vrai», la sortie passe de «avertissement» à «fatal» comme indiqué ci-dessous.

$ git add -A
warning: LF will be replaced by CRLF in .gitignore.
The file will have its original line endings in your working directory

$ git config --global core.safecrlf false

$ git reset

$ git config --global core.safecrlf true

$ git add -A
fatal: LF would be replaced by CRLF in .gitignore

$

Dans git récent, il vaut mieux utiliser gitattributes que autocrlf. Voyez ma réponse . Toutes les réponses (sur ce q) sont anciennes et obsolètes
Rusi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.