In Bezug auf die Code-Formatierung bin ich ein bisschen puristisch :). Ich entferne sehr oft unnötige Leerzeichen (Zeilen mit nur ws, ws am Zeilenende usw.). Ich habe sogar vim eingestellt, um diese Art von Linien zu zeigen, die rot gefärbt sind.
Mein Problem ist, dass ich mit git-diff oft so etwas sehe:
- else{
+ else{
Selbst wenn ich Git-Diff-Farben habe, kann ich keinen Unterschied erkennen (in dieser speziellen Situation habe ich 1 Ws am Ende der Zeile entfernt). Gibt es eine Möglichkeit, git-diff anzuweisen, zu zeigen, dass ws rot gefärbt ist? (Zum Beispiel diejenigen, die mit / \ s + $ / regexp übereinstimmen).
git
colors
diff
whitespace
Radarek
quelle
quelle
Antworten:
Möglicherweise müssen Sie die Konfigurationseinstellung color.diff.whitespace festlegen, z. B.:
(Ich gehe davon aus, dass Sie bereits haben
color.diff
odercolor.ui
eingestellt haben,auto
da Sie sagen, dass Siegit diff
ohnehin farbige Flecken sehen .)Wenn Sie den Typ von Leerzeichen Fehler zur Feinabstimmung möchten , die rot markiert sind, können Sie dann ändern
core.whitespace
, aberblank-at-eol
standardmäßig aktiviert, sodass Sie dies für das erwähnte Beispiel wahrscheinlich nicht ändern müssen.Eine mögliche Quelle der Verwirrung ist, dass bei der Ausgabe von
git diff
Leerzeichenfehler nur in den eingeführten Zeilen hervorgehoben werden, nicht in den entfernten. ( Update: Wie Paul Whittaker in seiner Antwort hervorhebt , über die Sie abstimmen sollten :), können Sie diese sehen, indem Sie den Sinn des Unterschieds mit umkehrengit diff -R
.)Weitere Dokumentation zu diesen Konfigurationsoptionen finden Sie in der Manpage zur Git-Konfiguration
Wenn Sie den
-R
Kludge nicht verwenden möchten, können Sie die Option WhiteSpace Error Highlight auf der Diff-Manpage verwenden .git diff --ws-error-highlight=new,old <file>
oder
git diff --ws-error-highlight=all <file>
Ich kenne keine Möglichkeit, dies dauerhaft einzuschalten und in der Konfiguration zu speichern, abgesehen von der Verwendung eines Alias:
git config alias.df 'diff --ws-error-highlight=all'
Jetzt können Sie verwenden:
git df <file>
Um die Änderungen in rot zu sehen.
Beachten Sie, dass mit Git 2.11 (Q4 2016) dieser Alias möglicherweise ersetzt wird durch:
Siehe Dokument weiter
git diff
und weitergit config
.quelle
git diff -R
git config diff.wsErrorHighlight all
. Verwenden Siegit config --global [...]
diese Option , um die Änderungen global vorzunehmen (dh alle Repos zu beeinflussen).Verwenden Sie
git diff -R
diese Option , um entfernte Zeilen in hinzugefügte Zeilen umzuwandeln. Dann werden nachfolgende Leerzeichen hervorgehoben.(Dies setzt voraus, dass Sie die Whitespace-Hervorhebung gemäß den Farbeinstellungen aus Marks Antwort bereits aktiviert haben. Die Gutschrift für diese Methode geht an Junios Beitrag unter http://git.661346.n2.nabble.com/Highlighting-whitespace-on-removal- with-git-diff-td5653205.html .)
Wenn
git diff -R
ich beispielsweise eine Datei von DOS-Zeilenenden nach Unix konvertiere, werden mir die^M
Zeichen (dis) am Ende der Zeilen deutlich angezeigt. Ohne-R
(und auch ohne-w
usw.) zeigt es an, dass sich die gesamte Datei geändert hat, aber nicht wie.quelle
git diff | cat -A | less -S
wenn Sie verzweifelt sind, aber zusätzlich zu den Wagenrückläufencat
werden auch alle farblich hervorgehobenen Escape-Codes buchstäblich angezeigt.cat -A
ist nicht portabel. Bei BSD-Katzen gibt es keine solche Option. Bitte verwenden Siecat -vet
stattdessen.Verwenden Sie
git diff --color | less -R
. Das-R
macht die Farbsteuerungscodes benutzerfreundlich.Dann können Sie die
less
Suche nach regulären Ausdrücken verwenden, zquelle
vim
übrigens auch.less -R
machte es einfach leichter für mich Rohrls --color
durchless
.Meine Version von
git diff
scheint dies bereits zu tun - ich habe git 1.7.4.1 und habe gesetztcolor.ui = auto
.quelle