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

标签 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`-] [-当 -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=. 的问题:

enter image description here

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

enter image description here

关于git - 如何使用 git --word-diff 显示空格差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52123651/

相关文章:

javascript - 删除不需要的空格的最安全方法

javascript - 使 rails 中的 javascript 库保持最新的最佳方法是什么?

git refs/pull/... 与 pull/

git stash 更改适用于新分支?

Git core.autocrlf 行尾默认设置

python - 如何使用 BeautifulSoup 剥离 html,保留像 textContent 这样的换行符?

git - 增加统一差异上下文行的数量是否有任何缺点?

version-control - 是否可以修补 2 个连续差异以输出第 3 个差异,以反射(reflect)前 2 个差异组合的所有更改?

unix - 如何区分两个文件列表并忽略列表中的位置

html - 如何消除 Shiny 中 fluidRow 之间顽固的空白?