Mein Editor ändert die Zeilenenden meiner Quelldateien. Wenn ich das tue git diff
, sehe ich dieselbe Linie zweimal - einmal mit -
und einmal mit +
- ohne sichtbaren Unterschied.
Wie kann ich git diff
mir zeigen, was diese Änderung tatsächlich war?
git
line-endings
git-diff
Stonky
quelle
quelle
git config diff.wsErrorHighlight all
Antworten:
Stellen Sie zunächst sicher, dass Sie die farbige Ausgabe verwenden (z. B. mit
git diff --color
) und dass Sie die Leerzeichenhervorhebung mit (z. B.) aktiviert haben.Dies funktioniert jedoch möglicherweise nicht in allen Fällen, da
git
das nachgestellte Leerzeichen für entfernte Zeilen nicht hervorgehoben wird. Verwenden Sie einfach das gelöschte Leerzeichenum das Leerzeichen auf die 'hinzugefügte' Seite des Vergleichs zu setzen, wo es hervorgehoben wird.
Weitere Einzelheiten finden Sie in den Antworten auf diese SO-Frage .
quelle
000000f0 2d 2d 7d 0a 2b 2b 7d 0a |--}.++}.|
Die 7d ist die '}' geschweifte Klammer.Sie können den Unterschied am Zeilenende mit dem folgenden Befehl sehen.
Dann wird "^ M" für das Ende von CRLF (DOS) gedruckt, nichts für das Ende von LF (Unix).
Anscheinend macht git diff das Richtige und druckt CR- und LF-Zeichen für das CRLF-Ende. Da CR jedoch von der Konsole verwendet wird, können wir es nicht sehen. Mit cat -v können wir es sichtbar machen.
quelle
git diff > somediff && vi somediff
, dass vim CRLF auch als ^ M zeigt. aber dascat -v
ist ordentlich.cat
die mir nicht bewusst war. :-)Eine Möglichkeit, Leerzeichenänderungen zu erkennen, besteht darin, ein zeichenweises "Wortdiff" mit zu erstellen
Dies hebt alle Leerzeichenänderungen überall in Zeilen hervor . Das entfernte Leerzeichen wird in
[-
und eingeschlossen-]
und das Leerzeichen in{+
und hinzugefügt+}
.Alternativ, wie von Alex vorgeschlagen
markiert alle Änderungen in Leerzeichen an den Enden der Linien .
quelle
hebt Leerzeichenunterschiede in geänderten Zeilen hervor.
quelle
Ein grafisches Diff-Tool zeigt Ihnen die Änderung besser - versuchen Sie es
git difftool
.Verwenden Sie meld und legen Sie die Einstellungen fest, um Leerzeichen anzuzeigen. (Bearbeiten -> Einstellungen -> Leerzeichen anzeigen.)
Andere grafische Tools haben wahrscheinlich ähnliche Optionen - @ Cottons Antwort + Kommentar zeigt Ihnen, wie Sie dies mit vimdiff tun.
quelle
git difftool --tool=meld doesn't
sogar starten verschmelzen. Ich weiß nicht, ob es daran liegt, dass eine Rebase durchgeführt wird oder nicht.