Faire Git “LF sera remplacé par CRLF” avertissements disparaissent

J’ai configuré Git pour qu’il ne commette pas de fins de ligne incohérentes. Le problème est que toute une stack de fichiers semble modifiée, même si ce n’est pas le cas. Qu’est-ce que je tape pour que ces fichiers aient les fins de ligne fixées du côté local?

# git checkout dev M src/au/policy/dao/EmailQueue.java M src/au/policy/dao/EmailQueueFactory.java M src/au/policy/dao/PolicyPublisher.java Already on 'dev' # git diff warning: LF will be replaced by CRLF in src/au/policy/dao/EmailQueue.java warning: LF will be replaced by CRLF in src/au/policy/dao/EmailQueueFactory.java warning: LF will be replaced by CRLF in src/au/policy/dao/PolicyPublisher.java 

C’est ce que j’ai ajouté à mon fichier de configuration git qui semble faire ce que je voulais en dehors de ce problème:

 autocrlf = true 

Vous pouvez simplement supprimer et ré-extraire les fichiers incriminés de l’index comme ceci:

 rm  git checkout --  

Ou, si ce sont les seuls fichiers modifiés (soyez prudent avec cette commande), vous pouvez le script comme ceci:

 git diff --name-only --diff-filter=M | xargs rm -- git checkout -- . 

Sur un système GNU, vous pouvez utiliser un canal légèrement plus sûr, mais vous ne semblez pas avoir d’espaces ou d’autres caractères de délimitation dans vos noms de fichiers.

 git diff -z --name-only --diff-filter=M | xargs -0 rm -- 

Cela peut arriver si vous modifiez la variable de configuration core.autocrlf (si je comprends bien votre problème).

Si vous êtes à l’état propre, c’est-à-dire juste après la validation, et que vous n’avez pas de modifications non validées , la ré-extraction forcée et la suppression de l’index devraient faire l’affaire:

La commande ci-dessous git reset --hard HEAD fera que votre twig actuelle pointe sur le dernier commit et que tout code non engagé sera perdu. Assurez-vous de valider le code ou de faire la sauvegarde

 $ rm .git/index $ git reset --hard HEAD 

Je pense que cela synchroniserait les fichiers de la zone de travail et l’index (zone de transfert) pour suivre les parameters de démarrage.

J’ai eu ce problème lors de la création d’un nouveau projet Xcode. Ma solution à ce problème:

En écriture en terminal

 $: git config --global --edit 

Ensuite, dans git config, changez le fichier safecrlf en false . Mes parameters:

 [core] autocrlf = input safecrlf = false 

Je sais que git a des outils de ligne de commande pour cela, mais ils ne fonctionnent pas pour moi. Et puis, Xcode crée sans problème des repo git.

La seule chose à laquelle je peux penser est de vérifier si core.safecrlf est configuré pour warn .

git config --get core.safecrlf

Je pense que les valeurs possibles sont true , false et warn . Je pense que cette mise à false résoudra l’avertissement, même si ce n’est peut-être pas une bonne idée.

Essayez ceci, cela a fonctionné pour moi:

 cd src/au/policy/dao dos2unix 

S’il y a d’autres fichiers dans ce dossier, vous voudrez peut-être les séparer de la manière suivante (sinon, il essaiera de le faire sur tous les fichiers de tous les sous-répertoires, ce qui peut prendre un certain temps):

 cd src/au/policy/dao dos2unix EmailQueue.java dos2unix EmailQueueFactory.java dos2unix PolicyPublisher.java 

Il s’est avéré très rapide sur ma machine et a corrigé toutes les fins de ligne, et c’est un peu plus simple et plus facile que certaines de ces autres corrections.