Wie schalte ich mit Git die Warnung "LF wird durch CRLF ersetzt" aus

153

Bei Git wird bei Verwendung des autocrlf = trueFlags immer noch eine Warnung ausgegeben, wenn die Zeilenenden geändert werden.

Ich verstehe, wofür die Warnung gedacht ist und wie das Flag für das Zeilenende deaktiviert wird, aber wie deaktiviere ich die Warnung selbst?

sent-hil
quelle
Alle Antworten hier sind veraltet - nachdem git gatattributes eingeführt hat. Safecrlf ist dein Freund autocrlf nicht! Bitte sehen Sie meine Antwort
Rusi

Antworten:

279

Sie können die Warnung mit ausschalten

git config --global core.safecrlf false

(Dadurch wird nur die Warnung deaktiviert, nicht die Funktion selbst.)

Chronial
quelle
Wird das Ausschalten der Warnung verhindern, dass Git lf durch crlf ersetzt? @chronial
aidonsnous
3
@aidonsnous Aus Git-Dokumenten : Wenn core.safecrlf auf "true" oder "warn" gesetzt ist, überprüft git, ob die Konvertierung für die aktuelle Einstellung von core.autocrlf umkehrbar ist. Für "true" lehnt git irreversible Conversions ab. Für "warn" gibt git nur eine Warnung aus, akzeptiert jedoch eine irreversible Konvertierung. Wenn Sie irreversible Konvertierungen nicht ablehnen müssen, wird die Warnung durch Setzen von core.safecrlf auf false unterdrückt, die automatische Konvertierung wird jedoch fortgesetzt.
Danny Libin
5

Sie sollten core.autocrlf inputund verwenden core.eol input. Oder lassen Sie git einfach nicht die Zeilenenden mit ändern autocrlf falseund entfernen Sie das Hervorheben von crlfs in diffs usw. mitcore.whitespace cr-at-eol .

Hoffe das hilft

Adam Dymitruk
quelle
Normalerweise möchten Sie, dass Ihre BAT-Skripte enden und mit CRLF und Ihr SH-Skript mit LF festgeschrieben werden.
Sandburg
0

Sie suchen nach der core.whitespaceOption ( git config --helpDetails siehe ).

Sie können diese Option folgendermaßen einstellen:

$ git config core.whitespace cr-at-eol
Pat Notz
quelle
0

Ich habe diesen Weg benutzt:

Speichern Sie Ihre aktuellen Dateien in Git, damit keine Ihrer Arbeiten verloren gehen.

git add . -u
git commit -m "Saving files before refreshing line endings"

Entfernen Sie jede Datei aus dem Git-Index.

git rm --cached -r .

Schreiben Sie den Git-Index neu, um alle neuen Zeilenenden aufzunehmen.

git reset --hard

Fügen Sie alle geänderten Dateien wieder hinzu und bereiten Sie sie für ein Commit vor. Dies ist Ihre Chance, zu überprüfen, welche Dateien, falls vorhanden, unverändert waren.

git add .
# It is perfectly safe to see a lot of messages here that read
# "warning: CRLF will be replaced by LF in file."

Übernehmen Sie die Änderungen in Ihr Repository.

git commit -m "Normalize all the line endings"

https://help.github.com/articles/dealing-with-line-endings/

Julia Shestakova
quelle
13
Ich glaube, das OP hat versucht, diese Warnungen nicht mehr zu sehen. Normalisieren Sie nicht alle Zeilenenden.
Mike Cluck
git rm --cached -r . && git reset --hardscheint den Trick zu tun, danke
Shanimal
0

Lustigerweise hatte ich beide Konfigurationen wie hier erklärt angewendet, und meine .gitconfig-Datei enthielt diese 2 Zeilen:

[core]
       autocrlf = false
       whitespace = cr-at-eol

Trotzdem habe ich die Warnung bekommen. Nur um es zu versuchen, habe ich beide Zeilen auskommentiert und die Warnung ist tatsächlich verschwunden. Keine Ahnung, warum ich sie überhaupt erst eingesetzt habe ...

Jean-Michel Bernard
quelle
0

Das Setzen von "core.safecrlf false" funktioniert. Nachdem ich den Wert in "true" geändert habe, ändert sich die Ausgabe von "warning" in "fatal" (siehe unten).

$ git add -A
warning: LF will be replaced by CRLF in .gitignore.
The file will have its original line endings in your working directory

$ git config --global core.safecrlf false

$ git reset

$ git config --global core.safecrlf true

$ git add -A
fatal: LF would be replaced by CRLF in .gitignore

$
Park JongBum
quelle
In letzter Zeit ist es besser, Gitattributes als Autocrlf zu verwenden. Siehe meine Antwort . Alle Antworten (auf diesem q) sind alt und veraltet
Rusi