如何使用 git --word-diff 显示空格差异?
how to show whitespace differences with git --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 中使用了颜色。
注意:this 没有帮助,因为 git diff --word-diff=porcelain
的输出中没有显示空白差异
--word-diff-regex
命令允许您指定一个正则表达式来自定义 --word-diff
行为。使用句号 (.
) 的常见示例将给出逐字符匹配,因为句号正则表达式匹配任何字符。当未指定正则表达式时,默认值因文件类型而异,但通常会忽略 whitespace 更改,同时也将它们用作单词边界。
您可以使用正则表达式将行划分为单词以及白色 space 区域,方法如下:
git diff --word-diff-regex="[ ]+|[^ ]+"
通过稍微调整您的链接示例的版本,可以看到 git diff --word-diff-regex=.
的问题:
虽然 git diff --word-diff-regex="[ ]+|[^ ]+"
会给你:
https://github.com/so-fancy/diff-so-fancy or https://coderwall.com/p/nl-bdg/more-readable-git-word-diff-on-osx 实际上可能是更好的方法,它显示了类似 github 的差异,其中显示了更多上下文,但也突出了实际更改的部分。
为了说明问题:参见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 中使用了颜色。
注意:this 没有帮助,因为 git diff --word-diff=porcelain
--word-diff-regex
命令允许您指定一个正则表达式来自定义 --word-diff
行为。使用句号 (.
) 的常见示例将给出逐字符匹配,因为句号正则表达式匹配任何字符。当未指定正则表达式时,默认值因文件类型而异,但通常会忽略 whitespace 更改,同时也将它们用作单词边界。
您可以使用正则表达式将行划分为单词以及白色 space 区域,方法如下:
git diff --word-diff-regex="[ ]+|[^ ]+"
通过稍微调整您的链接示例的版本,可以看到 git diff --word-diff-regex=.
的问题:
虽然 git diff --word-diff-regex="[ ]+|[^ ]+"
会给你:
https://github.com/so-fancy/diff-so-fancy or https://coderwall.com/p/nl-bdg/more-readable-git-word-diff-on-osx 实际上可能是更好的方法,它显示了类似 github 的差异,其中显示了更多上下文,但也突出了实际更改的部分。