2013-02-26 4 views
5

Ich habe ein MacBook und verwende Windows in einer Parallels VM. Meine Entwicklung ist hauptsächlich in Visual Studio, aber ich benutze gerne Git mit der Mac-Shell (genau so, wie es für Windows verfügbar ist).Zeilenende-Problem zwischen Mac und Windows

Wenn ich ein git diff mache, um festzustellen, was sich zwischen den Commits geändert hat, bekomme ich die sprichwörtliche Zeilenendung "changes", die git denken lässt, dass sich viel mehr geändert hat als tatsächlich.

Ich weiß, dass dies ein uraltes Problem ist, und ich habe eine Menge Forschung mit unterschiedlichen Vorschlägen von vielen Leuten gemacht, aber ich bin nicht in der Lage, dieses Problem zu lösen. Die vielversprechendsten Informationen wurden in dieser SO Post gefunden, aber es hat mein Problem nicht gelöst.

Hier sind einige relevante Linien von meinem .gitconfig ...

[core] 
    autocrlf = false 
    safecrlf = false 

Auch ich habe ein .gitattributes in der Wurzel meiner Repo, die nur enthält ...

* text eol=crlf 

Was kann ich tun Git Git aufhören zu denken, Zeilenende Änderungen sind echte Änderungen bei der Durchführung eines Diff? Auch hier benutze ich eine Mac-Shell, um Windows-Dateien anzuschauen, daher könnte dies ein Teil meines Problems sein.

Danke!

+0

Sie haben konnte das lösen? Es plagen auch mein Team. Macht mich verrückt. –

+0

Ich begann gerade Git von der Windows-Seite zu verwenden. Ich konnte es nicht lösen. Aber die Verwendung von Git von der Windows-Seite vermeidet das Problem. –

+0

Haben Sie die Chance, dass Sie das gelöst haben? –

Antwort

1

ein Konvertierungsprogramm verwenden zB Perl, perl -i -pne "s/\n/\r\n/g" Dateinamen

oder unix2dos und dos2unix.

Siehe auch http://en.wikipedia.org/wiki/Newline#Conversion_utilities

Für die Konfiguration von GIT eine andere Antwort sehen: Force LF eol in git repo and working copy

+0

Danke für die Antwort. Ich möchte die CRLF-Zeilenenden in den Windows-Dateien behalten, aber wenn ich die Unterschiede von der Mac-Seite mit git ansehe, sehe ich keine andere Zeile, die als Änderung endet. Ich denke, das Konvertierungsprogramm würde tatsächlich die Zeilenendungen ändern. –

2

I alias gdiff zu:

git diff -w origin/`git branch | sed --quiet "s/* \(.*\)/\1/p"` 

aber Sie können nur tun:

git diff -w 
Verwandte Themen