env:
- Windows 7
- msysgit
Wenn ich git commit
, heißt es:
warning: LF will be replaced by CRLF.
Ist dieser Warnschwanz rückwärts?
Ich bearbeite Dateien in Windows, das Zeilenende ist CRLF
genau wie in diesem Bild:
Und Git ändert es in, LF
um sich zum Repo zu verpflichten.
Ich denke also, die richtige Warnung lautet:
warning: CRLF will be replaced by LF.
Antworten:
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 ):
Auf diese Weise vermeiden Sie jede automatische Umwandlung und können sie dennoch über eine
.gitattributes
Datei undcore.eol
Anweisungen angeben .Nein, Sie arbeiten unter Windows und auf der
git config
Hilfeseite wird dies erwähntWie unter " Git ersetzen von LF durch CRLF " beschrieben, sollte es nur beim Auschecken (nicht beim Festschreiben) mit auftreten
core.autocrlf=true
.Wie in der Antwort von XiaoPeng erwähnt , ist diese Warnung dieselbe wie:
Wie in
git-for-windows/git
Ausgabe 1242 erwähnt :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 Festschreiben
LF
.Diese spezielle Warnung "
LF will be replaced by CRLF
" stammt von convert.c # check_safe_crlf () :Es heißt von
convert.c#crlf_to_git()
, selbst vonconvert.c#convert_to_git()
, vonconvert.c#renormalize_buffer()
.Und das letzte
renormalize_buffer()
wird nur von aufgerufenmerge-recursive.c#blob_unchanged()
.Ich vermute also, dass diese Konvertierung
git commit
nur 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)Beachten Sie, dass eine in 8462ff4 ("
convert_to_git()
:safe_crlf/checksafe
wirdint conv_flags
", 2018-01-13, Git 2.17.0) im Git 2.17-Zyklus eingeführte Regression dazu führte , dass beimautocrlf
Umschreiben 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)quelle
core.autocrlf=true
wird immer in LF im Repo und CRLF im Arbeitsbaum imho ergeben (auch unter Nicht-Windows). Quelle: LinkJA, die Warnung ist rückwärts.
Und in der Tat sollte es überhaupt keine Warnung sein. Weil diese Warnung nur besagt (aber leider rückwärts), dass die CRLF-Zeichen in Ihrer Datei mit Windows-Zeilenenden beim Festschreiben durch LFs ersetzt werden. Dies bedeutet, dass es auf dieselben Zeilenenden normalisiert ist, die von * nix und MacOS verwendet werden.
Es passiert nichts Seltsames, das ist genau das Verhalten, das Sie normalerweise wollen würden.
Diese Warnung in ihrer aktuellen Form ist eines von zwei Dingen:
;)
quelle
- Update am 9. Juli ---
"Es ist korrekt und genau" wurde entfernt, wie von @mgiuca kommentiert
======
NEIN . Es geht NICHT um Ihre Dateien mit
CRLF
. Es geht stattdessen um Dateien mitLF
.Es sollte lauten:
Dieses Bild sollte erklären, was es bedeutet.
quelle
All dies setzt voraus
core.autocrlf=true
Ursprünglicher Fehler:
Was sollte der Fehler lauten:
Erklärung hier :
Grundsätzlich hat eine lokale Datei, die zuvor LF war, jetzt lokal CRLF
quelle
git config --global core.autocrlf false
funktioniert gut für globale Einstellungen.Wenn Sie jedoch Visual Studio verwenden, müssen Sie möglicherweise auch Änderungen
.gitattributes
für bestimmte Projekttypen vornehmen ( z. B. c # -Klassenbibliotheksanwendung ):* text=auto
quelle
Nachdem ich festgelegt hatte, erhielt
core.autocrlf=true
ich "LF wird durch CRLF ersetzt" (beachten Sie, dass "CRLF wird durch LF ersetzt"), als ich bearbeitete Dateien in Windows in einem Repository (das verwendet wird) bearbeitetegit add
(oder war es vielleicht aufgit commit
?) LF) das wurde ausgecheckt bevor ich eingestellt habecore.autocrlf=true
.Ich habe eine neue Kasse mit gemacht
core.autocrlf=true
und jetzt bekomme ich diese Nachrichten nicht mehr.quelle
Wenn Sie Visual Studio 2017, 2019 verwenden, können Sie:
quelle
.gitconfig
oder.git/config
nicht befinden.gitignore
, die Dateien angibt, die von git ignoriert werden sollen.Mach einfach eine Sache:
quelle