Hallo, Entdecker! An dieser Seite wird aktiv gearbeitet, oder sie wird noch übersetzt. Die neuesten und genauesten Informationen finden Sie in unserer englischsprachigen Dokumentation.

Diese Version von GitHub Enterprise wird eingestellt am Diese Version von GitHub Enterprise wurde eingestellt am 2020-01-22. Es wird keine Patch-Freigabe vorgenommen, auch nicht für kritische Sicherheitsprobleme. Für eine bessere Leistung, verbesserte Sicherheit und neue Features nehmen Sie ein Upgrade auf die neueste Version von GitHub Enterprise vor. Wenden Sie sich an den GitHub Enterprise-Support, um Hilfe beim Upgrade zu erhalten.

Git zur Verarbeitung von Zeilenabschlüssen konfigurieren

Um Probleme bei Ihren Diffs zu verhindern, können Sie Git zur korrekten Verarbeitung von Zeilenabschlüssen konfigurieren.

Inhalt dieses Artikels

Jedesmal, wenn Sie auf der Tastatur die Eingabetaste drücken, fügen Sie ein unsichtbares Zeichen ein: einen Zeilenabschluss. Die unterschiedlichen Betriebssysteme haben Zeilenabschlüsse schon immer unterschiedlich verarbeitet.

Wenn Sie Änderungen in einer Datei anzeigen, verarbeitet Git Zeilenabschlüsse auf eigene Art und Weise. Da Sie mit Git und GitHub Enterprise an Projekten zusammenarbeiten, könnte Git unerwartete Ergebnisse produzieren, wenn Sie beispielsweise an einem Windows-PC arbeiten und Ihr Mitarbeiter eine Änderungen unter OS X vorgenommen hat.

Globale Einstellungen für Zeilenabschlüsse

Mit dem Befehl git config core.autocrlf können Sie ändern, wie Git Zeilenabschlüsse verarbeitet. Dazu ist ein einziges Argument nötig.

Unter OS X übergeben Sie einfach input an die Konfiguration. Ein Beispiel:

$ git config --global core.autocrlf input
# Konfiguriert Git unter OS X zur korrekten Verarbeitung von Zeilenabschlüssen

Unter Windows übergeben Sie einfach true an die Konfiguration. Ein Beispiel:

$ git config --global core.autocrlf true
# Konfiguriert Git unter Windows zur korrekten Verarbeitung von Zeilenabschlüssen

Unter Linux übergeben Sie einfach input an die Konfiguration. Zum Beispiel:

$ git config --global core.autocrlf input
# Konfiguriert Git unter Linux zur korrekten Verarbeitung von Zeilenabschlüssen

Repository-abhängige Einstellungen

Optional können Sie Repository-abhängig konfigurieren, wie Git Zeilenabschlüsse verarbeitet, indem Sie eine spezielle .gitattributes-Datei konfigurieren. Diese Datei wird in das Repository committet und überschreibt die Einstellung core.autocrlf eines Einzelbenutzers. So wird sichergestellt, dass das Verhalten für alle Benutzer konsistent ist, unabhängig von deren Git-Einstellungen. Der Vorteil einer .gitattributes-Datei besteht darin, dass Ihre Zeilenkonfigurationen mit Ihrem Ihrem Repository verknüpft werden. So besteht nicht die Gefahr, dass Mitarbeiter andere Einstellungen für Zeilenabschlüsse festgelegt haben wie Sie.

Die Datei .gitattributes muss im Root des Repositorys erstellt und wie jede andere Datei committet werden.

Eine .gitattributes-Datei sieht wie eine Tabelle mit zwei Spalten aus:

  • Links ist der Dateiname, den Git abgleichen soll.
  • Rechts befindet sich die Konfiguration für Zeilenabschlüsse, die Git für diese Dateien verwenden soll.

Beispiel

Hier sehen Sie ein Beispiel für eine .gitattributes-Datei. Sie können Sie als Vorlage für Ihre Repositorys verwenden:

# Legen Sie das Standardverhalten für den Fall fest, wenn jemand keine core.autocrlf festgelegt haben.
* text=auto

# Geben Sie explizit Textdateien an, die beim Auschecken immer normalisiert und in
# native Zeilenabschlüsse umgewandelt werden sollen.
*.c text
*.h text

# Geben Sie Dateien an, die beim Auschecken immer CRLF-Zeilenabschlüsse haben werden.
*.sln text eol=crlf

# Führen Sie alle Dateien auf, die wirklich binär sind und nicht geändert werden sollten.
*.png binary
*.jpg binary

Wie Sie sehen, werden Dateien aufgeführt – *.c, *.sln, *.png –, durch ein Leerzeichen voneinander getrennt und mit einer Einstellung – text, text eol=crlf, binary – versehen. Nachfolgend sehen wir uns einige mögliche Einstellungen an.

`text=auto`
Git verarbeitet die Dateien so, wie es für sinnvoll erachtet wird. Das ist eine gute Standardoption.
`text eol=crlf`
Git wandelt Zeilenabschlüsse beim Auschecken immer in `CRLF` um. Verwenden Sie diese Einstellung für Dateien, die die `CRLF`-Abschlüsse behalten sollen, auch unter OS X oder Linux.
`text eol=lf`
Git wandelt Zeilenabschlüsse beim Auschecken immer in `LF` um. Verwenden Sie diese Einstellung für Dateien, die die LF-Abschlüsse behalten sollen, auch unter Windows.
`binary`
Git versteht, dass die angegebenen Dateien keine Textdateien sind, und versucht nicht, sie umzuwandeln. Die Einstellung `binary` ist auch ein Alias für `-text -diff`.

Ein Repository nach dem Ändern der Zeilenabschlüsse aktualisieren

Wenn Sie die Option core.autocrlf eingestellt und eine .gitattributes-Datei committet haben, möchte Git möglicherweise Dateien committen, die Sie nicht geändert haben. An dieser Stelle möchte Git die Zeilenabschlüsse jeder Datei für Sie ändern.

Die beste Möglichkeit, die Zeilenabschlüsse Ihres Repositorys automatisch zu konfigurieren, besteht darin, zunächst ein Backup Ihrer Dateien mit Git zu erstellen, jede Datei im Repository zu löschen (mit Ausnahme des .git-Verzeichnisses) und dann alle Dateien gleichzeitig wiederherzustellen.

  1. Speichern Sie Ihre aktuellen Dateien in Git, damit nichts von Ihrer Arbeit verloren geht.

    $ git add . -u
    $ git commit -m "Saving files before refreshing line endings"
  2. Fügen Sie alle geänderten Dateien wieder hinzu, und normalisieren Sie die Zeilenabschlüsse.

    $ git add --renormalize .
  3. Zeigen Sie die umgeschriebenen, normalisierten Dateien an.

    $ git status
  4. Committen Sie die Änderungen an Ihr Repository.

    $ git commit -m "Normalize all the line endings"

Weiterführende Informationen

Menschliche Unterstützung einholen

Sie können das Gesuchte nicht finden?

Kontakt