2010-10-13 5 views
46

Mein Editor ändert die Zeilenenden meiner Quelldateien. Wenn ich git diff mache, sehe ich die gleiche Zeile zweimal - einmal mit - und einmal mit + - ohne sichtbaren Unterschied.git diff - zeige mir Zeilenende Änderungen?

Wie bekomme ich git diff, um mir zu zeigen, was diese Änderung tatsächlich war?

Antwort

5

Ein grafisches Diff-Tool zeigt Ihnen die Änderung besser - versuchen Sie git difftool.

Verwenden Sie meld, und legen Sie die Voreinstellungen so fest, dass Leerzeichen angezeigt werden. (Bearbeiten -> Einstellungen -> Whitespace anzeigen.)

Andere grafische Werkzeuge haben wahrscheinlich ähnliche Optionen - @ Cottons Antwort + Kommentar sagt Ihnen, wie Sie dies mit vimdiff tun.

+0

Ein grafisches Diff-Tool ist möglicherweise nicht verfügbar.Die Antwort von @paul-whittaker wird in dem Kontext funktionieren, der durch die Frage impliziert wird (einige Terminals). – beOn

44

Erstens, stellen Sie sicher, dass Sie die farbige Ausgabe verwenden (zB mit git diff --color) und dass Sie haben Leerzeichen Hervorhebung aktiviert mit (zB)

git config color.diff.whitespace "red reverse" 

Dies könnte nicht in allen Fällen funktionieren, aber wie git scheint nicht nachlaufende Leerzeichen für entfernt Zeilen hervorzuheben. Um zu sehen, Leerzeichen, die Sie gelöscht haben, verwenden Sie einfach

git diff -R 

die Leerzeichen setzen auf die ‚hinzugefügt‘ Seite des Vergleichs, wo es nicht hervorgehoben bekommen. Weitere Details finden Sie in den Antworten unter this SO question.

+0

Dies ist die eigentliche Antwort, obwohl ich zugeben muss, dass es lustig ist, stattdessen den roten Bereich auf der neuen Linie zu sehen. Vielen Dank! – zeh

5
git diff --ws-error-highlight=new,old 

hebt Whitespace Diffs in geänderten Zeilen hervor.

6

Eine Möglichkeit, Änderungen in Leerzeichen zu sehen, ist ein Zeichen-für-Zeichen „Wort diff“ mit

git diff --color --word-diff-regex=. 

Dies zeigt alle Leerzeichen in Linien überall zu tun ändern. Entfernte Leerzeichen werden in und -] eingeschlossen und Leerräume in {+ und +} hinzugefügt. Alternativ

, als suggested by Alex

git diff --color --ws-error-highlight=new,old 

hebt alle Änderungen in Leerzeichen an den Enden der Linien.

7

Sie können die Leitungsunterbrechungsdifferenz mit dem folgenden Befehl sehen.

git diff | cat -v 

Dann "^ M" für CRLF (DOS) Endung gedruckt nichts für LF (Unix) endet.

Scheinbar tut git diff das Richtige, druckt CR und LF Zeichen für CRLF Ende. Aber weil CR von der Konsole verbraucht wird, können wir es nicht sehen. Mit cat -v können wir es sichtbar machen.