1565 votes

LF sera remplacé par CRLF dans git - Qu'est-ce que c'est et est-ce important?

git init
git add .

Donne les avertissements suivants pour de nombreux fichiers:

Le fichier conservera ses fins de lignes originales dans votre répertoire de travail. attention: LF sera remplacé par CRLF dans .

Quelle est la différence entre LF et CRLF? Que dois-je faire concernant les avertissements?

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'option safecrlf = true définie dans un fichier .gitconfig (global ou local). Cachez-le simplement sous forme de commentaire s'il y en a un.

1935voto

Shrage Smilowitz Points 2877

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

7 votes

Je crois que vous vouliez dire '..saut de ligne (LF) donc (CRLF).', vous avez deux fois (CRLF)

1 votes

Mais même si vous désactivez les avertissements si nous copions un répertoire complet du dossier d'exportation svn vers git, nous devons télécharger tous les fichiers. Y a-t-il une solution à cela?

158 votes

Essayez ceci git config --global core.safecrlf false pour désactiver l'avertissement et le maintenir fonctionnel. J'ai obtenu cette commande de ici.

401voto

SG 86 Points 2460

Si vous le souhaitez, vous pouvez désactiver cette fonctionnalité dans votre configuration principale de git en utilisant

git config core.autocrlf false

Mais il serait préférable de simplement vous débarrasser des avertissements en utilisant

git config core.autocrlf true

114 votes

Hmm bizarre, je viens de définir core.autocrlf sur true (et j'ai confirmé que la commande git cli renvoie le statut en tant que true). cependant, je continue de recevoir les avertissements.

21 votes

Ne fonctionne pas pour moi. J'avais core.autocrlf false au départ.

6 votes

Oui, le mettre à true est ce qui m'a initialement donné les avertissements.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X