如何用git --word-diff显示空格差异? [英] how to show whitespace differences with git --word-diff?
问题描述
要说明该问题,请参见:
git diff --word-diff-regex = [] + | [^] +
会给您:
To illustrate the problem: see diff
the only diff in this paragraph (starting with A macro that needs
is whitespace differences (newlines inserted / removed in certain places);
- when running
git diff
it shows the paragraph before in red and paragraph after in red, making it hard to spot the difference - when running
git diff --word-diff
, it shows the paragraph after in gray and doesn't show the whitespace changes - when running
git diff --word-diff-regex=.
it shows the whitespace changes (great!) but [EDIT] it does character by character diff which is often unreadable as it mixes letters from different words to minimize the diff, eg:git show --word-diff-regex=. 4a720394bba39ce1e67d518b909cbb1c25f63d09
[- * patch compile-]r [-so `isM-]a[-inModule`-] [-is true when -d:isMainModuleIsAlwaysTr-]{+m+}u[-e-] [- T-]{+c+}h[-at'll give speedup-] be[-nefi-]t[-, and we don'-]t[- hav-]e{+r+} [-to p-]{+w+}a[-tch stdlib files-]{+y+}. ]#
What I want is an option to show whitespace differences while running --word-diff
(or --word-diff-regex), eg via {+ +}
and [- -]
; Note: for --word-diff=color
would be nice to show these to, eg also via {+ +}
and [- -]
since otherwise these would disappear.
Note: I'm using colors in my gitconfig.
Note: this doesn't help since whitespace differences are not shown in output of git diff --word-diff=porcelain
The --word-diff-regex
command allows you to specify a regex to customise the --word-diff
behaviour. The common example of using a full stop (.
) will give a character-by-character match since the full stop regex matches any character. When the regex is not specified the default is different depending on the file type, but usually ignores whitespace changes while also using them as word boundaries.
You could use a regex that divides lines into words as well as white space areas by using something like:
git diff --word-diff-regex="[ ]+|[^ ]+"
With a slightly tweaked version of your linked example, the problem with git diff --word-diff-regex=.
can be seen:
While git diff --word-diff-regex="[ ]+|[^ ]+"
would give you:
这篇关于如何用git --word-diff显示空格差异?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!