1228 Stimmen

git ersetzt LF durch CRLF

Ich führe Git auf einem Windows XP-Rechner aus und verwende Bash. Ich habe mein Projekt aus SVN exportiert und dann ein leeres Repository geklont.

Dann habe ich den Export in das Verzeichnis bare repositories eingefügt und eine:

git add -A

Daraufhin erhielt ich eine Liste von Nachrichten:

LF wird durch CRLF ersetzt

Was sind die Auswirkungen dieser Umstellung? Es handelt sich um eine .NET-Lösung in Visual Studio.

17voto

basiloungas Punkte 335

Entfernen der folgenden Einträge aus der Datei ~/.gitattributes

* text=auto

verhindert, dass Git die Zeilenenden von vornherein überprüft.

15voto

Michael Ribbons Punkte 1447

https://web.archive.org/web/20130615060528/http://www.rtuin.nl/2013/02/how-to-make-git-ignore-different-line-endings/

http://www.rtuin.nl/2013/02/how-to-make-git-ignore-different-line-endings/ (Funktioniert nicht)

Sie können das CRLF-Verhalten komplett oder pro Dateityp deaktivieren, indem Sie Einträge in Ihrer .gitattributes-Datei ändern. In meinem Fall habe ich dies getan:

  • -crlf Dies weist Git an, die Zeilenenden für alle Dateien zu ignorieren. Die Dateien in Ihrem Arbeitsverzeichnis werden dabei nicht verändert. Auch wenn Sie die core.autocrlf auf true, false oder input gesetzt haben.
echo "* -crlf" > .gitattributes 

Führen Sie dies in einem separaten Commit durch, da Git sonst möglicherweise ganze Dateien als geändert ansieht, wenn Sie eine einzelne Änderung vornehmen (je nachdem, ob Sie die Option autocrlf geändert haben)

Das hier funktioniert wirklich. Git respektiert die Zeilenenden in Projekten mit gemischten Zeilenenden und warnt Sie nicht vor ihnen.

13voto

Joey Adams Punkte 39825

Ich weiß nicht viel über Git unter Windows, aber...

Ich habe den Eindruck, dass Git das Rückgabeformat so konvertiert, dass es dem Format der laufenden Plattform (Windows) entspricht. CRLF ist das Standardrückgabeformat in Windows, während LF das Standardrückgabeformat für die meisten anderen Betriebssysteme ist.

Die Chancen stehen gut, dass das Rückgabeformat richtig angepasst wird, wenn der Code in ein anderes System übertragen wird. Ich gehe auch davon aus, dass Git intelligent genug ist, um Binärdateien intakt zu halten, anstatt zu versuchen, LFs in CRLFs zu konvertieren, zum Beispiel in JPEGs.

Zusammenfassend lässt sich sagen, dass Sie sich wahrscheinlich nicht allzu viele Gedanken über diese Umstellung machen müssen. Wenn Sie Ihr Projekt jedoch als Tarball archivieren, werden Ihre Kollegen es wahrscheinlich zu schätzen wissen, wenn Sie Zeilenabschlüsse in LF statt in CRLF haben. Je nachdem, wie sehr Ihnen das am Herzen liegt (und je nachdem, dass Sie nicht Notepad benutzen), sollten Sie Git so einstellen, dass es LF-Zeilen verwendet, wenn Sie können :)

Anhang: CR ist ASCII-Code 13, LF ist ASCII-Code 10. CRLF besteht also aus zwei Bytes, während LF ein Byte ist.

12voto

Devs love ZenUML Punkte 10325

Sie sollte lauten:

Warnung: ( Wenn Sie es auschecken oder in einen anderen Ordner klonen, wobei Ihre aktuelle core.autocrlf true ,)LF wird durch CRLF ersetzt

Die Datei wird mit ihren ursprünglichen Zeilenenden in Ihrer ( actual ) Arbeitsverzeichnis.

Dieses Bild soll erklären, was es bedeutet. enter image description here

9voto

hyvi tan Punkte 91

Stellen Sie sicher, dass Sie die neueste Git-Version installiert haben.
Ich habe wie oben beschrieben gehandelt. git config core.autocrlf false als ich git (Version 2.7.1) verwendet habe, aber es hat nicht funktioniert.
Dann funktioniert es jetzt beim Upgrade von Git (von 2.7.1 auf 2.20.1).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X