A GitHub-Artikel über Zeilenenden wird häufig erwähnt, wenn es um dieses Thema geht.
Meine persönliche Erfahrung mit der Verwendung der oft empfohlenen core.autocrlf
config Einstellung war sehr gemischt.
Ich verwende Windows mit Cygwin und habe sowohl mit Windows- als auch mit UNIX-Projekten zu verschiedenen Zeiten zu tun. Sogar meine Windows-Projekte verwenden manchmal bash
Shell-Skripte, die UNIX-Zeilenenden (LF) benötigen.
Mit der von GitHub empfohlenen core.autocrlf
Wenn ich ein UNIX-Projekt unter Windows auschecke (was unter Cygwin einwandfrei funktioniert - oder vielleicht trage ich zu einem Projekt bei, das ich auf meinem Linux-Server verwende), werden die Textdateien mit Windows-Zeilenenden (CRLF) ausgecheckt, was zu Problemen führt.
In einer gemischten Umgebung, wie ich sie habe, ist die Einstellung der globalen core.autocrlf
zu einer der Optionen wird in einigen Fällen nicht gut funktionieren. Diese Option könnte in einer lokalen (Repository-) Git-Konfiguration gesetzt werden, aber selbst das wäre nicht gut genug für ein Projekt, das sowohl Windows- als auch UNIX-bezogene Dinge enthält (z.B. habe ich ein Windows-Projekt mit einigen bash
Utility-Skripte).
Die beste Wahl, die ich gefunden habe, ist es, pro Repository zu erstellen .gitattributes Dateien. Die Website GitHub-Artikel erwähnt es.
Beispiel aus diesem Artikel:
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.c text
*.h text
# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
In einem der Repositorys meines Projekts:
* text=auto
*.txt text eol=lf
*.xml text eol=lf
*.json text eol=lf
*.properties text eol=lf
*.conf text eol=lf
*.awk text eol=lf
*.sed text eol=lf
*.sh text eol=lf
*.png binary
*.jpg binary
*.p12 binary
Es ist zwar etwas aufwändiger, aber wenn man es einmal pro Projekt macht, sollte jeder Mitarbeiter auf jedem Betriebssystem keine Probleme mit den Zeilenenden haben, wenn er mit diesem Projekt arbeitet.