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

时间:2018-08-31 23:30:46

标签: git diff whitespace word-diff

为说明问题,请参见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的输出中未显示空格差异

2 个答案:

答案 0 :(得分:3)

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

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

git diff --word-diff-regex="[ ]+|[^ ]+"

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

enter image description here

git diff --word-diff-regex="[ ]+|[^ ]+"会给您:

enter image description here

答案 1 :(得分:1)

https://github.com/so-fancy/diff-so-fancyhttps://coderwall.com/p/nl-bdg/more-readable-git-word-diff-on-osx实际上可能是一个更好的方法,它显示了一个类似github的diff,其中显示了更多上下文,但同时突出了实际更改的部分。