如何让Git diff忽略版本号的更改?

6
有没有办法从 Git diff 中删除版本号变更的噪音,类似于 这个 这样的差异?具体来说,如果一行只包含从一个数字到另一个数字的更改,我可以设置 Git diff 忽略它吗?

1
这些文件真的属于源代码控制吗? - Code-Apprentice
也许使用-g选项会有帮助? - Christoph
@Code-Apprentice Git 用于跟踪第三方应用程序中字符串的更改。我认为你的问题与我的不相关。为了保持评论主题的一致性:是否有一种自动取消暂存这些更改的方法? - Steve Moser
你可以为git指定自定义的diff命令,这样就可以过滤掉这些东西,但是你示例中提到的版本都是各不相同的,可能很难编写过滤器。 - Adam Katz
涂抹和清洁过滤器?https://git-scm.com/book/zh/v2/自定义-Git-Git属性 - Mort
1个回答

6
我认为可以使用git-diff --word-diff-regex=[^0-9]来实现(查看 [^0-9] 的作用)。对于更复杂的模式,您需要更复杂的正则表达式,但是,除了递归,使用正则表达式可以实现任何事情。

来自Git - git-diff--word-diff-regex文档

--word-diff-regex=

使用<regex>来决定什么是一个单词,而不是将连续的非空格字符视为单词。如果没有启用,则也意味着--word-diff

每个非重叠匹配的<regex >被视为一个单词。在这些匹配之间的任何内容都被视为空白并且被忽略,以便找出差异。您可能需要在正则表达式末尾添加|[^[:space:]]以确保它匹配所有非空格字符。包含换行符的匹配被静默截断。

例如,--word-diff-regex=.将把每个字符视为单词,并相应地按字符显示差异。

正则表达式也可以通过diff驱动程序或配置选项进行设置,请参见gitattributes[5]git-config[1]。显式给定将覆盖任何diff驱动程序或配置设置。Diff驱动程序会覆盖配置设置。

另请参阅


1
谢谢。这指引我朝着正确的方向。我更新了正则表达式,忽略了 . 并从这个回答中添加了 -U0:https://dev59.com/dVwX5IYBdhLWcg3w-Thv 来删除上下文。最终我得到了这个命令:git diff -w -U0 --word-diff-regex=[^0-9\.] - Steve Moser
不客气。如果问题已解决,可以自行标记为已解决 :)。 - raul.vila
1
会的,只需要等待计时器在50分钟后到期。 - Steve Moser
@SteveMoser,计时器已经到期了。无论如何,我现在该如何抑制那些没有更改的块?尽管没有突出显示更改,但它们仍然会出现在我的输出中。我有一个脚本更新100个文件,只要它只更改数字,我就没问题,但我不想滚动浏览数百个空块。 - Giszmo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接