GIT crlf Konfiguration in gemischter Umgebung
-
28-09-2019 - |
Frage
Ich bin mit einer gemischten Umgebung, und halten eine zentrale, nackten Repository, in dem ich ziehen und schieben die meisten meiner Sachen. Dieses zentrale Repository läuft auf Linux, und ich auschecken, um Windows XP / 7, Mac und Linux. In allen Repositories habe ich die folgende Zeile in meinem .git / config:
[core]
autocrlf = true
Ich habe nicht die Flagge safecrlf=true
überall. Zum ersten Mal, als ich Material auf meinem einem Windows-Rechner ändern (XP) gibt es kein Problem und wenn ich am diff sehen, es sieht gut aus. Aber wenn ich das gleiche auf dem anderen Windows-Rechner (7) werden alle Linien wie geändert gezeigt, aber lokale Zeilenende sind \ r \ n wie erwartet (wenn in einem Hex-Editor markiert). Das gleiche gilt für eine MacOSX kann. Manchmal habe ich das Gefühl, dass die verschiedenen Systeme auf Zeilenende ringen, aber ich kann nicht sicher sein (Ich verliere den Überblick über all die Male, die ich bestimmte Dateien ändern).
ich nicht verwenden, um den autocrlf
Satz, aber die Fahne viele Monate zurück gesetzt. Könnte sein, dass meine aktuellen Probleme verursacht? Muss ich wieder Klon alles etwas alt Gepäck verlieren? Oder gibt es andere Dinge, die Bedürfnisse der Konfiguration auch? Ich habe versucht, git checkout -- .
über eine Million Mal, aber ohne Erfolg.
Lösung
Sie müssen Set autocrlf
zu true
auf jeder Maschine, die Sie arbeiten an (in global) oder für jede Kopie des Repository (in lokalen). Die Einstellungen des Repo Sie von geklonten werden auf Ihrem lokalen Repo nicht angewendet werden.
Die andere Antwort ist, dass Sie eine Mischung aus Zeilenenden in den Dateien in Ihrem Repo haben.
Ein Filter auf Kasse Setup für jede des Quelldateitypen sein könnte ihre Zeilenende zu korrigieren und auf checkin sie an den Repo-Standard zurückgesetzt werden.