Ich versuche, git dazu zu bringen, keinerlei Zeilenenden für irgendeine Operation zu ändern. Leider scheint es egal zu sein, was passiert. Ich habe es auf den folgenden Testfall reduziert, der so viele verschiedene Mechanismen zum Deaktivieren dieses Verhaltens enthält, wie ich finden konnte.
- Beginnen Sie mit zwei Maschinen (Windows-Computer = A, Linux-Computer = B)
- Auf beiden Maschinen:
git config --global core.autocrlf false - Auf beiden Maschinen:
git config --global core.eol crlf(nur für den Fall)
- Erstellen Sie ein neues Repository für A. Aus einem leeren Ordner:
git init --shared(dann das erstellte.gitVerzeichnis einblenden )- Erstellen Sie eine neue Datei
.gitignoreim Repository - Erstellen Sie eine neue Datei
.gitattributesim Repository mit der einzelnen Zeile:* -text git add ., dann umgit commit -m "initial commit"zu umgehen, zB dies .git branch master_recv- Fernbedienungen hinzufügen
- Erstellen Sie eine neue Datei
document.txtim Repository, die CRLF enthält - Commit:
git add -Adanngit commit -m "<something>" - Beachten Sie, dass A
document.txtnoch CRLF enthält (und wenn Sie es löschen und mit zurücksetzen, wird--harddie Version mit CRLF zurückgegeben)
- SCP das gesamte Verzeichnis auf Computer B.
- Fügen Sie eine neue Datei
new filemit CRLF hinzu - Commit:
git add -Adanngit commit -m "<something>" - Beachten Sie, dass sowohl B
document.txtals auch Bnew fileweiterhin CRLF enthalten
- Ziehe B's Master zu A:
git pull <remote> master:master_recv - A's
document.txthat sich in LF geändert. Die hinzugefügte Dateinew fileenthält auch LF.
Das Problem tritt nicht auf, wenn B ein Windows-Computer ist.


core.autocrlfimmer falsch? Klingt es so, als hätten Sie bereits\nZeilenenden in Ihrem Repository? Es gibt keine Einstellung, die\nin Ihrem Repository\r\nin Ihrem Arbeitsverzeichnis geändert werden kann .