为说明问题,请参见diff
本段中唯一的区别(从A macro that needs
开始是空白差异(在某些位置插入/删除了换行符);
git diff
时,它用红色显示前段,用红色显示后段,因此很难发现差异git diff --word-diff
时,其后的段落显示为灰色,并且不显示空格更改git diff --word-diff-regex=.
时会显示空格变化(非常好!),但是[EDIT]会逐字符进行差异显示,这通常是不可读的,因为它将不同单词的字母混合在一起以最小化差异,例如:
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+}.
]#
我想要的一个选项是在运行--word-diff
(或--word-diff-regex)时显示空白差异,例如通过{+ +}
和[- -]
;注意:例如,--word-diff=color
也可以通过{+ +}
和[- -]
来显示这些内容,否则这些内容将消失。
注意:我在gitconfig中使用颜色。
注意:this没有帮助,因为在git diff --word-diff=porcelain
的输出中未显示空格差异
答案 0 :(得分:3)
使用--word-diff-regex
命令可以指定一个正则表达式来自定义--word-diff
行为。使用句号(.
)的常见示例将给出逐个字符的匹配,因为句号正则表达式匹配任何字符。如果未指定正则表达式,则默认值会根据文件类型而有所不同,但通常会忽略空格更改,同时还将它们用作单词边界。
您可以使用正则表达式将正则表达式划分为单词和空白区域,例如:
git diff --word-diff-regex="[ ]+|[^ ]+"
通过对链接示例的稍作调整,可以看到git diff --word-diff-regex=.
的问题:
git diff --word-diff-regex="[ ]+|[^ ]+"
会给您:
答案 1 :(得分:1)
https://github.com/so-fancy/diff-so-fancy或https://coderwall.com/p/nl-bdg/more-readable-git-word-diff-on-osx实际上可能是一个更好的方法,它显示了一个类似github的diff,其中显示了更多上下文,但同时突出了实际更改的部分。