J'utilise Ubuntu 13.10 x64, et je travaille sur un projet que certains développeurs utilisent Windows, j'ai récemment changé la configuration de git core.eol
en "lf" et core.autocrlf
en "input" et core.safecrlf
en "true". Depuis lors, lorsque j'essaye de valider le fichier dans mon référentiel local, j'obtiens cette erreur:
fatal: CRLF would be replaced by LF in ......
D'après ce que je comprends, si je mets core.eol
à "lf" et core.autocrlf
à "input", git convertira automatiquement CRLF en LF, mais pourquoi cette erreur vient en dehors? Comment puis-je résoudre ce problème?
Merci.
git diff
sortie: git.661346.n2.nabble.comcore.autocrlf
sur input?git config core.eol
"lf
"etcore.autocrlf
"input
"": cela ne change pas les fichiers déjà là. Cela aurait un impact sur l'avenirgit pull
. Les fichiers actuels sont toujours dans CRLF, et s'ils sont modifiés, sont convertis en LF si possible et, sinon, déclenche le message d'erreur que vous mentionnez.J'ai eu le même problème et j'ai essayé la solution suggérée sans succès.
J'ai dû exécuter une deuxième commande pour que cela fonctionne:
la source
la source
git diff
considère maintenant mon fichier entier (1000 lignes) comme un conflit. Les outils de diff ne voient que 3 changements de ligne.On peut juste essayer dos2unix:
la source
Cela m'est arrivé sur des milliers de fichiers. J'ai donc écrit un script de bash rapide pour le
dos2unix
réparer pour moi. Quelqu'un d'autre sur Linux ou Mac pourrait le trouver utile.En gros, il essaie de faire
git add .
. Si la commande échoue, elle récupère le nom du fichier incompatible de la sortie d'erreur. Ensuite, il s'exécutedos2unix
sur ce fichier. Il répète ce processus jusqu'à ce qu'ilgit add .
fonctionne.Si vous exécutez ceci, vous devriez voir à
dos2unix: converting file xxx to Unix format...
plusieurs reprises. Si vous ne le faites pas, cela ne fonctionne pas, alors appuyez simplement sur ctrl+ cou command+ cpour l'arrêter.la source
Vous devez ajouter tous les fichiers qui
git status
s'affichent comme modifiés:Et puis validez vos modifications:
Cela conservera vos fichiers locaux tels quels, mais
autocrlf
les conservera sur le référentiel distant.la source
J'ai rencontré le même problème et j'ai corrigé l'édition
.gitattributes
comme ci-dessous.commenter 2 lignes dans .gitattributes
la source
Pour info, je ne sais pas si cela s'applique à vous, mais j'obtenais cette erreur en essayant accidentellement de tout ajouter
node_modules
aux modifications par étapes. Donc en fait.gitignoring
lenode_modules
résoudre mon problème.la source
Je suis sur un Mac utilisant Terminal et j'ai eu ce problème avec un fichier .htaccess que j'essayais de commettre, obtenant l'erreur fatale:
Je voulais résoudre le problème, comme les requêtes OP, pas seulement désactiver un indicateur git, j'ai donc trouvé cet article qui donne une commande perl pour résoudre le problème par fichier.
Donc, pour mon erreur .htaccess ci-dessus, j'ai exécuté ce qui suit:
Les indicateurs -p, -i et -e (pie) peuvent être combinés pour vous permettre d'éditer des fichiers en utilisant Perl à partir de la ligne de commande. Dans ce cas, remplacer tout \ r \ n trouvé par \ n.
la source