Warnung: LF wird durch CRLF ersetzt.
Je nach Editor Sie verwenden, um eine Textdatei mit LF wäre nicht notwendig , mit CRLF gespeichert: recent Editoren können bewahren EOL - Stil. Aber diese Git-Konfigurationseinstellung besteht darauf, diese zu ändern ...
Stellen Sie einfach sicher, dass (wie ich hier empfehle ):
git config --global core.autocrlf false
Auf diese Weise vermeiden Sie jede automatische Umwandlung und können sie dennoch über eine .gitattributesDatei und core.eolAnweisungen angeben .
Windows Git "LF wird durch CRLF ersetzt"
Ist diese Warnung rückwärts?
Nein, Sie arbeiten unter Windows und auf der git configHilfeseite wird dies erwähnt
Verwenden Sie diese Einstellung, wenn Sie CRLFZeilenenden in Ihrem Arbeitsverzeichnis haben möchten, obwohl das Repository keine normalisierten Zeilenenden hat.
Wie unter " Git ersetzen von LF durch CRLF " beschrieben, sollte es nur beim Auschecken (nicht beim Festschreiben) mit auftreten core.autocrlf=true.
repo
/ \
crlf->lf lf->crlf
/ \
Wie in der Antwort von XiaoPeng erwähnt , ist diese Warnung dieselbe wie:
Warnung: (Wenn Sie es mit Ihrer aktuellen core.autocrlfKonfiguration auschecken / oder in einen anderen Ordner klonen ,) LF wird durch CRLF ersetzt.
Die Datei hat ihre ursprünglichen Zeilenenden in Ihrem (aktuellen) Arbeitsverzeichnis.
Wie in git-for-windows/gitAusgabe 1242 erwähnt :
Ich bin immer noch der Meinung, dass diese Nachricht verwirrend ist. Die Nachricht könnte um eine bessere Erklärung des Problems erweitert werden, zum Beispiel: "LF wird durch CRLF ersetzt, file.jsonnachdem die Datei entfernt und erneut ausgecheckt wurde."
Hinweis: Git 2,19 (September 2018), bei der Verwendung core.autocrlf, die gefälschten „LF wird durch CRLF ersetzt werden“ Warnung wird nun unterdrückt .
Wie Quaylar zu Recht bemerkt , ist es nur eine Konvertierung beim FestschreibenLF .
Diese spezielle Warnung " LF will be replaced by CRLF" stammt von convert.c # check_safe_crlf () :
if (checksafe == SAFE_CRLF_WARN)
warning("LF will be replaced by CRLF in %s.
The file will have its original line endings
in your working directory.", path);
else /* i.e. SAFE_CRLF_FAIL */
die("LF would be replaced by CRLF in %s", path);
Es heißt von convert.c#crlf_to_git(), selbst von convert.c#convert_to_git(), von convert.c#renormalize_buffer().
Und das letzte renormalize_buffer()wird nur von aufgerufen merge-recursive.c#blob_unchanged().
Ich vermute also, dass diese Konvertierung git commitnur dann erfolgt, wenn das Festschreiben Teil eines Zusammenführungsprozesses ist.
Hinweis: Mit Git 2.17 (Q2 2018) wird durch eine Codebereinigung eine Erklärung hinzugefügt.
Siehe Commit 8462ff4 (13. Januar 2018) von Torsten Bögershausen ( tboegi) .
(Zusammengeführt von Junio C Hamano - gitster- in Commit 9bc89b1 , 13. Februar 2018)
convert_to_git (): safe_crlf / checksafe wird zu int conv_flags
Beim Aufruf definierte convert_to_git()der checksafeParameter, was passieren soll, wenn die EOL-Konvertierung ( CRLF --> LF --> CRLF) nicht sauber umrundet.
Darüber hinaus wurde auch definiert, ob Zeilenenden renormiert ( CRLF --> LF) oder unverändert beibehalten werden sollen.
checksafe war eine safe_crlfAufzählung mit folgenden Werten:
SAFE_CRLF_FALSE: do nothing in case of EOL roundtrip errors
SAFE_CRLF_FAIL: die in case of EOL roundtrip errors
SAFE_CRLF_WARN: print a warning in case of EOL roundtrip errors
SAFE_CRLF_RENORMALIZE: change CRLF to LF
SAFE_CRLF_KEEP_CRLF: keep all line endings as they are
Beachten Sie, dass eine in 8462ff4 (" convert_to_git():
safe_crlf/checksafewird int conv_flags", 2018-01-13, Git 2.17.0) im Git 2.17-Zyklus eingeführte Regression dazu führte , dass beim autocrlfUmschreiben trotz Einstellungsafecrlf=false eine Warnmeldung
ausgegeben wurde .
Siehe Commit 6cb0912 (04. Juni 2018) von Anthony Sottile ( asottile) .
(Zusammengeführt von Junio C Hamano - gitster- in Commit 8063ff9 , 28. Juni 2018)