Wie lasse ich Git unter Windows beim Commit automatisch Zeilenenden umwandeln?

Melden
  1. Einleitung
  2. Hintergrund der Zeilenenden-Problematik
  3. Git-Konfiguration für automatische Zeilenend-Umwandlung
  4. Konkrete Schritte zur Einstellung unter Windows
  5. Hinweis zur .gitattributes-Datei
  6. Zusammenfassung

Einleitung

Windows, macOS und Linux verwenden unterschiedliche Zeichenfolgen zur Kennzeichnung eines Zeilenendes in Textdateien. Während Windows typischerweise die Zeichenfolge CRLF (Carriage Return + Line Feed) verwendet, nutzen Unix-basierte Systeme wie Linux und macOS LF (Line Feed) als Zeilenende. Diese unterschiedlichen Formate können bei der Versionsverwaltung mit Git zu Problemen führen, zum Beispiel, wenn mehrere Entwickler mit verschiedenen Betriebssystemen an einem Projekt arbeiten. Um diese Probleme zu vermeiden, bietet Git Mechanismen zur automatischen Umwandlung der Zeilenenden beim Commit und Checkout an.

Hintergrund der Zeilenenden-Problematik

Wenn ein Windows-Benutzer Dateien mit CRLF-Zeilenenden schreibt, und ein Linux-Benutzer dieselben Dateien mit LF-Zeilenenden, kann dies zu vermeintlichen Änderungen in der Versionshistorie führen, obwohl der eigentliche Inhalt gleich ist. Ohne eine Konsistenzregel kann das Repository dadurch unübersichtlich werden, da Zeilenenden häufig ungewollt als Änderungen erkannt werden.

Git-Konfiguration für automatische Zeilenend-Umwandlung

Git stellt eine Konfigurationsoption namens core.autocrlf zur Verfügung, die das Verhalten der Zeilenendumwandlung steuert. Unter Windows empfiehlt es sich, diese Option so einzustellen, dass beim Commit alle Zeilenenden von CRLF in LF umgewandelt werden und beim Checkout umgekehrt wieder in CRLF. Dies sorgt dafür, dass im Repository konsistent nur LF-Zeilenenden gespeichert werden, während auf dem lokalen Windows-System komfortabel mit den gewohnten CRLF-Zeilenenden gearbeitet wird.

Konkrete Schritte zur Einstellung unter Windows

Um Git auf einem Windows-PC mit automatischer Zeilenenden-Umwandlung zu konfigurieren, öffnet man die Eingabeaufforderung (cmd) oder Git Bash und führt folgenden Befehl aus:

git config --global core.autocrlf true

Diese Einstellung bewirkt, dass Git beim Checkout eines Projekts alle LF-Zeilenenden in CRLF konvertiert (damit die Dateien im Windows-typischen Format vorliegen) und beim Commit wieder in LF umwandelt, bevor die Dateien in das Repository geschrieben werden.

Alternativ kann die Einstellung mit Wert input verwendet werden, wenn man verhindern möchte, dass Git beim Checkout die Zeilenenden ändert. In diesem Fall werden nur beim Commit von Windows nach Unix CRLF-Zeilenenden in LF gewandelt:

git config --global core.autocrlf input

Das ist sinnvoll, wenn man beispielsweise in einer Umgebung arbeitet, in der keine lokale Umwandlung auf CRLF gewünscht ist.

Hinweis zur .gitattributes-Datei

Zusätzlich zur globalen core.autocrlf-Einstellung kann das Repository mit einer .gitattributes-Datei versehen werden, um das Zeilenende-Verhalten für bestimmte Dateitypen genau zu steuern. Dort kann für Textdateien eine standardisierte Behandlung definiert werden, z.B. mit dem Eintrag:

* text=auto

Dieser Eintrag sorgt dafür, dass Git die Dateien als Text behandelt und Zeilenenden entsprechend der core.autocrlf-Einstellung konvertiert.

Zusammenfassung

Um unter Windows beim Commit automatisch die Zeilenenden von CRLF zu LF umzuwandeln, ist die wichtigste Einstellung die globale Git-Konfiguration core.autocrlf auf true. Dadurch stellt Git sicher, dass das Repository konsequent mit LF-Zeilenenden arbeitet, während auf dem lokalen Rechner Windows-typische CRLF-Zeilenenden verwendet werden können. Zusätzlich kann eine .gitattributes-Datei dabei helfen, das Verhalten noch granulärer zu steuern. Dieses Setup verhindert Probleme und ungewollte Änderungen durch unterschiedliche Zeilenendformate in plattformübergreifenden Projekten.

0
0 Kommentare