为了说明问题:参见 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`-] [-当 -d:isMainModuleIsAlwaysTr-]{+m+}u[-e-] 时为真 [- T-]{+c+}h[-at'll give speedup-] be[-nefi-]t[-, and we don't'-]t[- hav-]e{+r+} [-to p -]{+w+}a[-tch stdlib 文件-]{+y+}。 ]#
我想要的是在运行 --word-diff
(或--word-diff-regex)时显示空格差异的选项,例如通过 {+ +}
和 [- -]
;注意:对于 --word-diff=color
最好将这些显示给,例如也可以通过 {+ +}
和 [- -]
因为否则这些就会消失。
注意:我在我的 gitconfig 中使用了颜色。
备注:this没有帮助,因为空格差异未显示在 git diff --word-diff=porcelain
最佳答案
--word-diff-regex
命令允许您指定一个正则表达式来自定义 --word-diff
行为。使用句号 (.
) 的常见示例将给出逐字符匹配,因为句号正则表达式匹配任何字符。当未指定正则表达式时,默认值因文件类型而异,但通常会忽略空格更改,同时还将它们用作单词边界。
您可以使用正则表达式将行划分为单词以及空白区域,方法如下:
git diff --word-diff-regex="[ ]+|[^ ]+"
通过稍微调整您的链接示例的版本,可以看到 git diff --word-diff-regex=.
的问题:
虽然 git diff --word-diff-regex="[ ]+|[^ ]+"
会给你:
关于git - 如何使用 git --word-diff 显示空格差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52123651/