Ich verwende Ubuntu 13.10 x64 und arbeite an einem Projekt, das einige Entwickler unter Windows verwenden. Ich habe kürzlich die Git-Konfiguration core.eol
in "lf" und core.autocrlf
"input" und core.safecrlf
in "true" geändert . Wenn ich seitdem versuche, eine Datei in mein lokales Repository zu übertragen, wird folgende Fehlermeldung angezeigt : Soweit ich weiß, konvertiert git CRLF automatisch in LF,
fatal: CRLF would be replaced by LF in ......
wenn ich core.eol
"lf" und core.autocrlf
"input" setze , aber warum tritt dieser Fehler auf? aus? Wie kann ich dieses Problem beheben?
Danke dir.
git diff
Ausgabe: git.661346.n2.nabble.com/…core.autocrlf
Eingabe eingestellt habe?git config core.eol
in"lf
"undcore.autocrlf
"input
" geändert ": Das ändert nichts an den bereits vorhandenen Dateien. Das hätte Auswirkungen auf die Zukunftgit pull
. Die aktuellen Dateien befinden sich noch in CRLF. Wenn sie geändert werden, werden sie nach Möglichkeit in LF konvertiert. Andernfalls wird die von Ihnen erwähnte Fehlermeldung ausgelöst.Ich hatte das gleiche Problem und versuchte die vorgeschlagene Lösung ohne Erfolg.
Ich musste einen zweiten Befehl ausführen, damit es funktioniert:
quelle
quelle
git diff
sehe jetzt meine gesamte Datei (1000 Zeilen) als Konflikt. Die Diff-Tools sehen nur 3 Zeilenänderungen.Man kann einfach dos2unix ausprobieren:
quelle
Das ist mir bei Tausenden von Dateien passiert. Also habe ich ein schnelles Bash-Skript geschrieben,
dos2unix
um es für mich zu reparieren. Jemand anderes unter Linux oder Mac könnte es nützlich finden.Grundsätzlich versucht es zu tun
git add .
. Wenn der Befehl fehlschlägt, wird der Name der inkompatiblen Datei aus der Fehlerausgabe abgerufen. Dann läuft esdos2unix
auf dieser Datei. Dieser Vorgang wird so lange wiederholt, bis ergit add .
funktioniert.Wenn Sie dies ausführen, sollten Sie
dos2unix: converting file xxx to Unix format...
wiederholt sehen. Wenn Sie dies nicht tun, funktioniert es nicht. Drücken Sie einfach ctrl+ coder command+ c, um es zu stoppen.quelle
Sie müssen alle Dateien hinzufügen,
git status
die als geändert angezeigt werden:Und dann übernehmen Sie Ihre Änderungen:
Dadurch bleiben Ihre lokalen Dateien unverändert, befinden sich jedoch
autocrlf
im Remote-Repository.quelle
Ich hatte die gleichen Probleme und habe die Bearbeitung
.gitattributes
wie unten behoben .2 Zeilen in .gitattributes auskommentieren
quelle
Zu Ihrer Information, ich bin mir nicht sicher, ob dies auf Sie zutrifft, aber ich habe diesen Fehler erhalten, als ich versehentlich versucht habe, alle
node_modules
zu den bereitgestellten Änderungen hinzuzufügen . Also eigentlich hat.gitignoring
dasnode_modules
mein Problem gelöst.quelle
Ich bin auf einem Mac mit Terminal und hatte dieses Problem mit einer .htaccess-Datei, die ich festschreiben wollte. Dabei wurde der schwerwiegende Fehler angezeigt:
Ich wollte das Problem wie die OP-Anforderungen beheben und nicht nur ein Git-Flag deaktivieren. Deshalb habe ich diesen Artikel gefunden , der einen Perl-Befehl enthält, um das Problem auf Dateibasis zu beheben.
Für meinen obigen .htaccess-Fehler habe ich Folgendes ausgeführt:
Die Flags -p, -i und -e (pie) können kombiniert werden, damit Sie Dateien mit Perl über die Befehlszeile bearbeiten können. In diesem Fall ersetzen Sie alle gefundenen \ r \ n durch \ n.
quelle