如何用git --word-diff显示空白差异?

tim*_*our 7 git diff whitespace word-diff

为了说明问题:参见diff

本段中唯一的差异(从A macro that needs空格差异开始(在某些地方插入/删除换行符);

  • 在运行时git diff它显示红色之前的段落和红色之后的段落,这使得很难发现差异
  • 在运行时git diff --word-diff,它显示灰色后的段落,并且不显示空白更改
  • git diff --word-diff-regex=.它运行时显示空白变化(太棒了!)但是[编辑]它通过字符差异来做字符,这通常是不可读的,因为它混合来自不同单词的字母以最小化差异,例如: 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中使用颜色.

注意:没有用,因为输出中没有显示空白差异git diff --word-diff=porcelain

Sil*_*eri 5

--word-diff-regex命令允许您指定正则表达式以自定义--word-diff行为。使用句号(.)的常见示例将给出逐个字符的匹配,因为句号正则表达式匹配任何字符。如果未指定正则表达式,则默认值会根据文件类型而有所不同,但通常会忽略空格更改,同时还将它们用作单词边界。

您可以使用如下正则表达式将行分为单词和空白区域:

git diff --word-diff-regex="[ ]+|[^ ]+"
Run Code Online (Sandbox Code Playgroud)

通过对链接示例的稍作调整,git diff --word-diff-regex=.可以看到问题所在:

在此处输入图片说明

虽然git diff --word-diff-regex="[ ]+|[^ ]+"会给你:

在此处输入图片说明