Dans les systèmes Unix, la fin d'une ligne est représentée par un saut de ligne (LF). Sous Windows, une ligne est représentée par un retour chariot (CR) et un saut de ligne (LF) donc (CRLF). lorsque vous obtenez du code à partir de git qui a été téléchargé à partir d'un système Unix, ils n'auront que un LF.
Si vous êtes un développeur travaillant seul sur une machine Windows, et que cela ne vous dérange pas que git remplace automatiquement les LF par des CRLF, vous pouvez désactiver cette alerte en tapant ce qui suit dans la ligne de commande git
git config core.autocrlf true
Si vous voulez prendre une décision intelligente quant à la manière dont git devrait gérer cela, lisez la documentation
Voici un extrait
Formatage et espace blanc
Les problèmes de formatage et d'espaces blancs sont certains des problèmes les plus frustrants et subtils auxquels de nombreux développeurs sont confrontés lorsqu'ils collaborent, surtout de manière inter-plateforme. Il est très facile que des correctifs ou d'autres travaux de collaboration introduisent des changements subtils d'espaces blancs car les éditeurs les introduisent silencieusement et si vos fichiers touchent un système Windows, leurs fins de ligne pourraient être remplacées. Git dispose de quelques options de configuration pour aider à résoudre ces problèmes.
core.autocrlf
Si vous programmez sous Windows et travaillez avec des personnes qui ne le sont pas (ou vice versa), vous rencontrerez probablement des problèmes de fin de ligne à un moment donné. Cela est dû au fait que Windows utilise à la fois un caractère retour chariot et un caractère saut de ligne pour les nouvelles lignes dans ses fichiers, alors que les systèmes Mac et Linux n'utilisent que le caractère saut de ligne. Il s'agit d'un fait subtil mais incroyablement ennuyeux du travail inter-plateforme; de nombreux éditeurs sur Windows remplacent silencieusement les fins de ligne au style LF existantes par CRLF, ou insèrent les deux caractères de fin de ligne lorsque l'utilisateur appuie sur la touche Entrée.
Git peut gérer cela en convertissant automatiquement les fins de ligne CRLF en LF lorsque vous ajoutez un fichier à l'index, et vice versa lorsque vous vérifiez le code sur votre système de fichiers. Vous pouvez activer cette fonctionnalité avec le paramètre core.autocrlf. Si vous êtes sur une machine Windows, définissez-le sur true - cela convertit les fins en LF en CRLF lorsque vous vérifiez le code:
$ git config --global core.autocrlf true
Si vous êtes sur un système Linux ou Mac qui utilise des fins de ligne LF, alors vous ne voulez pas que Git les convertisse automatiquement lorsque vous vérifiez les fichiers; cependant, si un fichier avec des fins de ligne CRLF est introduit accidentellement, alors vous voulez que Git les corrige. Vous pouvez dire à Git de convertir CRLF en LF lors de la validation mais pas dans l'autre sens en paramétrant core.autocrlf sur input:
$ git config --global core.autocrlf input
Ce paramétrage devrait vous laisser avec des fins CRLF lors de récupérations sur Windows, mais des fins LF sur les systèmes Mac et Linux et dans le dépôt.
Si vous êtes un programmeur Windows travaillant sur un projet uniquement Windows, alors vous pouvez désactiver cette fonctionnalité, en enregistrant les retours chariot dans le dépôt en définissant la valeur de configuration sur false:
$ git config --global core.autocrlf false
46 votes
De nos jours, presque n'importe quel éditeur de texte ou outil lié au développement que vous utilisez tiendra compte des différences de fin de ligne entre Unix et Windows. Sauf Notepad, mais Notepad n'est pas si cool de toute façon :)
1 votes
@Matt Greer Ce qui signifie essentiellement que puisque j'utilise l'IDE Aptana Studios 3 pour Ruby on Rails, cela va provoquer cela à se produire ?
3 votes
Attention n'est pas mauvaise. Pire est un message comme ceci
fatal: LF serait remplacé par CRLF dans Gemfile.lock
, et git ne vous permet pas d'ajouter un fichier. Il est produit si vous avez l'optionsafecrlf = true
définie dans un fichier .gitconfig (global ou local). Cachez-le simplement sous forme de commentaire s'il y en a un.13 votes
@MattGreer c'est toujours un énorme problème - si vous avez les fins de ligne mal placées sur une ligne de shebang, par exemple, un noyau Linux peut penser que l'ensemble du script est sur une seule ligne, et l'ensemble du script est donc le nom de quelque exécutable à exécuter. Ou presque aussi mauvais, l'exécutable s'appelle "/usr/bin/perl\cM" ou quoi que ce soit.
8 votes
Si vous êtes dans un système Unix
$ dos2unix fichier
corrigera cela pour vous0 votes
Vous recevez ce message car vous avez supprimé un dossier dans votre dépôt et ajouté de nouveau des dossiers avec le même nom et au même chemin. La solution est de supprimer d'abord les dossiers, de les valider, puis d'ajouter les dossiers et de les valider à nouveau - cela a résolu mon erreur de validation. Par exemple, j'ai supprimé un module noeud indésirable et ajouté de nouveau un module supprimé noeud. Santé!
1 votes
De plus, vérifiez s'il existe un fichier .gitattributes, si le contenu contient *text=auto eol=crlf, supprimez cette ligne.
0 votes
Bien que j'aie défini autocrlf sur vrai dans la configuration globale, l'avertissement persiste.