web-dev-qa-db-fra.com

Git, l’ajout de fichiers au référentiel génère une erreur fatale pour LF -> CRLF

Je suis nouveau chez Git et j'ai besoin d'aide. J'utilise msysgit sur Windows.

Lorsque j'exécute la commande git add [folderName], je reçois la réponse:

fatal: LF would be replaced by CRLF in [.css file or .js file]

et puis, si vous essayez de faire un commit, rien ne se passe.

$ git commit
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       so01/
nothing added to commit but untracked files present (use "git add" to track)

Certains de ces fichiers css/js ont été téléchargés à partir du réseau, je suppose donc que c’est pourquoi ils ont LF . Si je l’ouvre et que je coupe/colle le contenu, le message d’erreur suivant apparaît sur le fichier, etc.

Toute aide sera très appréciée.

Modifier

Définir core.autocrlf sur false semble résoudre le problème, mais j'ai lu sur de nombreuses publications pour ne pas définir cette option sur false.

Quelqu'un peut-il m'indiquer où puis-je savoir quels problèmes peuvent survenir dans cette situation? 

40
user619656

Faites confiance aux éditeurs de code pour manipuler les fins de ligne. Auto crlf devrait être faux. Ne laissez pas le contrôle de source devenir trop intelligent. Si vous n'avez pas besoin de votre outil de contrôle de code source pour changer les fins de ligne, ne le faites pas. Cela va faire mal.

Pour reprendre une réponse acceptée: "À moins que vous ne voyiez un traitement spécifique qui doit traiter l’éolien, vous feriez mieux de laisser autocrlf à faux."

Également tiré du livre de progiciels à la fin de la section sur autocrlf:

"Si vous êtes un programmeur Windows réalisant un projet Windows uniquement, vous pouvez désactiver cette fonctionnalité et enregistrer les retours chariot dans le référentiel en définissant la valeur de configuration sur false"

La seule autre aide que je puisse vous donner est que si vous prenez l’autre itinéraire, familiarisez-vous avec vim -b qui affichera des caractères spéciaux tels que le CR dans MSysGit, et git show HEAD:path/to/your/file.txt qui devrait vous montrera le fichier de la manière que git a stockée il. 

Définissez core.whitespace cr-at-eol pour que les correctifs et les différences ne mettent pas en surbrillance les CR comme des espaces potentiellement problématiques.

Ne vaut pas la peine. Stocker tel quel.

22
Adam Dymitruk

très nouveau pour cela, donc mettre core.autocrlf à false n’a pas trop de sens pour moi. Donc pour les autres débutants, allez dans le fichier de configuration dans votre dossier .git et ajoutez:

[core]
    autocrlf = false

sous la rubrique [de base].

24
sigmapi13

Le problème est probablement dû au fait que vous avez défini Git pour stocker des fichiers en interne avec crlf avec le paramètre core.eol. Lorsque vous ajoutez un fichier, Git vous avertit qu'il le changera au format interne.

Git fonctionne mieux avec les fins de ligne lf, aussi, si possible, utilisez toujours core.eol = lf.

Cela devrait expliquer quand utiliser core.autocrlf, Pourquoi devrais-je utiliser core.autocrlf = true dans Git?

Vous voudrez peut-être aussi utiliser core.safecrlf. Vérifiez git config --help pour plus de détails sur les paramètres.

6
m0tive

La détection automatique des formats par Git fonctionne plutôt bien. Par conséquent, core.autocrlf=true est une très bonne idée sous Windows.

Dire git config --global core.safecrlf=false dit à git: Hé, convertissez mes fins de ligne Incorrect (LF uniquement) en fins de ligne Windows (CRLF) et ne me dérangez pas.

Par conséquent, vous devriez vraiment désactiver core.safecrlf.

Réponse plus longue sur: https://stackoverflow.com/a/15471083/873282

0
koppor