Git diff -w只在开始时忽略空格&行尾

时间:2010-12-03 23:00:19

标签: git diff whitespace ignore

我喜欢使用git diff -w来忽略空白差异。但是,我只是注意到它忽略了线条中间的空白差异。我怎么才能忽略在行的开头(^)或结束($)处出现的空白差异?

2 个答案:

答案 0 :(得分:395)

对于行尾使用:

git diff --ignore-space-at-eol

而不是您当前使用的是什么:

git diff -w (--ignore-all-space)

如果你想要一个内置的解决方案,那么你就不幸了。

然而,如果你不介意弄脏手,那里有一个相当古老的补丁浮出某处,增加了对“--ignore-space-at-sol”的支持。

答案 1 :(得分:1)

这是一个古老的问题,但仍会定期查看/需要。我想发布警告,以提醒像我这样的读者,OP问题中提到的 whitespace 与正则表达式的定义相同,包括换行符,制表符和空格字符- Git要求您保持露骨。在此处查看一些选项:https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

如上所述,git diff -bgit diff --ignore-space-change将忽略行尾的空格。如果希望将该设置作为默认行为,则以下行将该意图添加到您的.gitconfig文件中,因此它将始终忽略行尾的空格:

git config --global core.whitespace trailing-space

在我的情况下,我发现了这个问题,因为我有兴趣忽略“回车空白”,所以我需要这样做:

git diff --ignore-cr-at-eolhere中的git config --global core.whitespace cr-at-eol

您还可以通过省略--global参数,并检入该存储库的设置文件,将其设置为该存储库的默认 。对于我遇到的CR问题,如果在.gitconfig文件的[core]部分中warncrlf或autocrlf = true,则在签入后消失。