Diese Antwort scheint relevant zu sein, da das OP auf die Notwendigkeit einer Multi-OS-Lösung hinweist. In diesem Github-Hilfeartikel werden die verfügbaren Ansätze für den betriebssystemübergreifenden Umgang mit Zeilenenden beschrieben. Es gibt globale und Pro-Repo-Ansätze für die Verwaltung von Cross-OS-Zeilenenden.
Globaler Ansatz
Konfigurieren Sie die Behandlung von Git-Zeilenenden unter Linux oder OS X:
git config --global core.autocrlf input
Konfigurieren Sie die Behandlung von Git-Zeilenenden unter Windows:
git config --global core.autocrlf true
Per-Repo-Ansatz:
Erstellen Sie im Stammverzeichnis Ihres Repos eine .gitattributes
Datei und definieren Sie zeilenweise Einstellungen für das Zeilenende Ihrer Projektdateien im folgenden Format: path_regex line-ending-settings
Dabei line-ending-settings
ist eines der folgenden:
- Text
- binär (Dateien, für die Git keine Zeilenenden ändern sollte)
Der text
Wert kann weiter konfiguriert werden, um Git anzuweisen, wie Zeilenenden für übereinstimmende Dateien behandelt werden sollen:
text
- Ändert die Zeilenenden in native Zeilenenden des Betriebssystems.
text eol=crlf
- Konvertiert Zeilenenden in CRLF
an der Kasse.
text eol=lf
- Konvertiert Zeilenenden in LF
an der Kasse.
text=auto
- Sinnvolle Standardeinstellung, bei der das Zeilenhandling nach Ermessen von Git bleibt.
Hier ist der Inhalt einer .gitattributes-Beispieldatei:
# Set the default behavior for all files.
* text=auto
# Normalized and converts to
# native line endings on checkout.
*.c text
*.h text
# Convert to CRLF line endings on checkout.
*.sln text eol=crlf
# Convert to LF line endings on checkout.
*.sh text eol=lf
# Binary files.
*.png binary
*.jpg binary
Weitere Informationen zum Aktualisieren Ihres Repos nach dem Ändern der Einstellungen für die Zeilenenden finden Sie hier . Tldr:
Sichern Sie Ihre Dateien mit Git, löschen Sie alle Dateien in Ihrem Repository (mit Ausnahme des .git-Verzeichnisses) und stellen Sie die Dateien auf einmal wieder her. Speichern Sie Ihre aktuellen Dateien in Git, damit keine Ihrer Arbeiten verloren gehen.
git add . -u
git commit -m "Saving files before refreshing line endings"
Entfernen Sie den Index und zwingen Sie Git, das Arbeitsverzeichnis erneut zu scannen.
rm .git/index
Schreiben Sie den Git-Index neu, um alle neuen Zeilenenden aufzunehmen.
git reset
Zeigen Sie die neu geschriebenen, normalisierten Dateien an.
In einigen Fällen ist dies alles, was getan werden muss. Andere müssen möglicherweise die folgenden zusätzlichen Schritte ausführen:
git status
Fügen Sie alle geänderten Dateien wieder hinzu und bereiten Sie sie für ein Commit vor. Dies ist Ihre Chance, zu überprüfen, welche Dateien, falls vorhanden, unverändert waren.
git add -u
Es ist absolut sicher, hier viele Nachrichten zu sehen, die [s] lauten: "Warnung: CRLF wird in der Datei durch LF ersetzt."
Schreiben Sie die .gitattributes-Datei neu.
git add .gitattributes
Übernehmen Sie die Änderungen in Ihr Repository.
git commit -m "Normalize all the line endings"