webentwicklung-frage-antwort-db.com.de

Das Hinzufügen von Dateien zum Repository führt zu einem schwerwiegenden Fehler LF -> CRLF

Ich bin ein Neuling und brauche Hilfe. Ich benutze msysgit unter Windows.

Beim Ausführen des Befehls git add [folderName] erhalte ich die Antwort:

fatal: LF would be replaced by CRLF in [.css file or .js file]

und wenn Sie versuchen, ein Commit auszuführen, passiert nichts.

$ git commit
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       so01/
nothing added to commit but untracked files present (use "git add" to track)

Einige dieser css/js-Dateien wurden aus dem Internet heruntergeladen, daher denke ich, dass sie LF..__ haben. Wenn ich die Datei öffne und den Inhalt ausschneide/einfüge, dann bekomme ich den Fehler in der nächsten Datei und so weiter.

Jede Hilfe wird sehr geschätzt.

Bearbeiten

Die Einstellung von core.autocrlf auf false scheint das Problem zu lösen, aber ich habe in vielen Beiträgen gelesen, dass diese Option nicht auf false gesetzt ist.

Kann mir jemand zeigen, wo ich herausfinden kann, welche Probleme in dieser Situation auftreten können? 

40
user619656

Vertrauen Sie den Code-Editoren, um die Zeilenenden zu bearbeiten. Auto crlf sollte falsch sein. Lassen Sie die Quellcodeverwaltung nicht zu intelligent werden. Wenn Sie Ihr Quellcodeverwaltungswerkzeug nicht benötigen, um Ihre Zeilenenden zu ändern, tun Sie dies nicht. Das wird weh tun.

Um eine akzeptierte Antwort zu wiederholen: "Wenn Sie keine spezifische Behandlung sehen, die sich mit nativem Eol befassen muss, ist es besser, autocrlf auf false zu setzen."

Auch aus dem Progit-Buch am Ende des Abschnitts zu autocrlf:

"Wenn Sie ein Windows-Programmierer sind, der ein reines Windows-Projekt ausführt, können Sie diese Funktion deaktivieren, indem Sie die Wagenrückläufe im Repository aufzeichnen, indem Sie den Konfigurationswert auf" false "setzen.

Die einzige andere Hilfe, die ich geben kann, ist, wenn Sie die andere Route wählen, machen Sie sich mit vim -b vertraut, das Sonderzeichen wie CR in MSysGit und git show HEAD:path/to/your/file.txt zeigt, die Ihnen die Datei in der von git gespeicherten Weise anzeigen soll es. 

Stellen Sie core.whitespace cr-at-eol so ein, dass Patches und Diffs CRs nicht als möglicherweise problematische Leerzeichen hervorheben.

Die Mühe nicht wert. Speichern Sie, wie es ist.

22
Adam Dymitruk

sehr neu in diesem Sinne, so dass das Setzen von core.autocrlf auf false für mich nicht sehr sinnvoll war. Für andere Neulinge gehen Sie in die Konfigurationsdatei in Ihrem .git-Ordner und fügen Sie Folgendes hinzu:

[core]
    autocrlf = false

unter der Überschrift [Kern].

24
sigmapi13

Das Problem tritt wahrscheinlich auf, weil Sie Git so einstellen, dass Dateien intern mit crlf mit der Einstellung core.eol gespeichert werden. Wenn Sie eine Datei hinzufügen, warnt Sie Git, dass diese in das interne Format geändert wird.

Git funktioniert am besten mit lf Zeilenenden, also möglichst immer mit core.eol = lf.

Dies sollte erklären, wann core.autocrlf, verwendet werden sollte. Warum sollte ich core.autocrlf = true in Git verwenden?

Möglicherweise möchten Sie auch core.safecrlf verwenden. Überprüfen Sie git config --help für Details zu den Einstellungen.

6
m0tive

Die automatische Erkennung von Formaten funktioniert ziemlich gut. Daher ist core.autocrlf=true unter Windows eine wirklich gute Idee.

Sagen git config --global core.safecrlf=false sagt zu git: Hey, bitte konvertiere meine wrong Zeilenenden (nur LF) zu Windows Zeilenenden (CRLF) und störe mich nicht damit.

Daher sollten Sie core.safecrlf wirklich deaktivieren.

Längere Antwort unter: https://stackoverflow.com/a/15471083/873282

0
koppor