Diese Meldungen sind auf den falschen Standardwert von core.autocrlf
unter Windows.
Das Konzept der autocrlf
ist es, die Umwandlung von Zeilenenden transparent zu handhaben. Und das tut sie!
Schlechte Nachrichten : Wert muss manuell konfiguriert werden.
Gute Nachrichten : Es sollte nur EINMAL pro Git-Installation durchgeführt werden (eine Einstellung pro Projekt ist ebenfalls möglich).
Wie autocrlf
Werke :
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repo repo repo
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
Aquí crlf
= Zeilenende-Markierung im Win-Stil, lf
= unix-style (und mac osx).
(pre-osx cr
bei keiner der drei oben genannten Optionen betroffen)
Wann wird diese Warnung angezeigt (unter Windows)?
- autocrlf
= true
wenn Sie im Unix-Stil lf
in einer Ihrer Dateien (= RARELY),
- autocrlf
= input
wenn Sie win-style haben crlf
in einer Ihrer Dateien (= fast IMMER),
- autocrlf
= false
- NIEMALS!
Was bedeutet diese Warnung?
Die Warnung " LF wird durch CRLF ersetzt " sagt, dass Sie (mit autocrlf
= true
) wird Ihr LF im Unix-Stil nach dem Commit-Checkout-Zyklus verloren gehen (es wird durch ein CRLF im Windows-Stil ersetzt). Git erwartet nicht, dass Sie unter Windows LF im Unix-Stil verwenden.
Die Warnung " CRLF wird durch LF ersetzt " sagt, dass Sie (mit autocrlf
= input
) verliert nach einem Commit-Checkout-Zyklus Ihr CRLF im Windows-Stil (es wird durch ein LF im Unix-Stil ersetzt). Verwenden Sie nicht input
unter Windows.
Eine weitere Möglichkeit zu zeigen, wie autocrlf
Werke
1) true: x -> LF -> CRLF
2) input: x -> LF -> LF
3) false: x -> x -> x
donde x ist entweder CRLF (Windows-Stil) oder LF (Unix-Stil) und Pfeile stehen für
file to commit -> repository -> checked out file
Wie beheben
Standardwert für core.autocrlf
wird bei der Git-Installation ausgewählt und in der systemweiten Gitconfig gespeichert ( %ProgramFiles(x86)%\git\etc\gitconfig
unter Windows, /etc/gitconfig
unter Linux). Außerdem gibt es (kaskadierend in der folgenden Reihenfolge):
- "globale" (pro Benutzer) Gitconfig unter ~/.gitconfig
ein weiterer
- "global" (pro Benutzer) gitconfig unter $XDG_CONFIG_HOME/git/config
o $HOME/.config/git/config
et
- "lokal" (pro Repository) gitconfig unter .git/config
im Arbeitsverzeichnis.
Also, schreiben Sie git config core.autocrlf
im Arbeitsverzeichnis, um den aktuell verwendeten Wert zu überprüfen und
- git config --system core.autocrlf false
# Pro-System-Lösung
- git config --global core.autocrlf false
# Pro-Benutzer-Lösung
- git config --local core.autocrlf false
# projektbezogene Lösung
Warnungen
- git config
Einstellungen können überschrieben werden durch gitattributes
Einstellungen.
- crlf -> lf
Die Konvertierung erfolgt nur beim Hinzufügen neuer Dateien, crlf
Dateien, die bereits im Repo vorhanden sind, sind davon nicht betroffen.
Moral (für Windows):
- Verwendung core.autocrlf
= true
wenn Sie vorhaben, dieses Projekt auch unter Unix zu verwenden (und nicht bereit sind, Ihren Editor/IDE so zu konfigurieren, dass er Unix-Zeilenenden verwendet),
- Verwendung core.autocrlf
= false
wenn Sie vorhaben, dieses Projekt nur unter Windows zu verwenden (oder wenn Sie Ihren Editor/IDE so konfiguriert haben, dass er Unix-Zeilenendungen verwendet),
- niemals verwenden. core.autocrlf
= input
es sei denn, Sie haben einen guten Grund dazu ( z.B. wenn Sie Unix-Dienstprogramme unter Windows verwenden oder wenn Sie Probleme mit Makefiles haben),
PS Was ist bei der Installation von git für Windows zu beachten?
Wenn Sie keines Ihrer Projekte unter Unix verwenden wollen, no mit der ersten Standardoption einverstanden. Wählen Sie die dritte Option ( Auschecken wie es ist, Übertragen wie es ist ). Sie werden diese Nachricht nicht sehen. Niemals.
PPS Meine persönliche Vorliebe ist die Konfiguration der Herausgeber/IDE um Endungen im Unix-Stil zu verwenden, und die Einstellung core.autocrlf
a false
.