Git diff -w仅在行首和行尾忽略空格


366

我喜欢用来git diff -w忽略空格差异。但是,我只是注意到它甚至忽略了行中间的空格差异。如何仅忽略行首(^)或行尾($)出现的空格差异?


31
考虑使用git diff -b代替吗?
乔纳斯·比斯特罗姆(JonasByström),

5
“ -b --ignore-space-change忽略空白量的变化。这将忽略行尾的空白,并将一个或多个空白字符的所有其他序列都视为等效。”
mowwwalker '18

Answers:


450

对于行尾使用:

git diff --ignore-space-at-eol

而不是您当前正在使用什么:

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

首先,如果您想要一个内置的解决方案,那您真不走运。

但是,如果您不介意弄脏手,则有一个相当老的补丁浮在那儿,可以增加对“ --ignore-space-at-sol”的支持。


谢谢,但是如果您将diff配置为外部工具,则无法使用。
adardesign 2013年

@adardesign,我认为可能必须在外部工具中进行配置。我不确定在没有空格更改的情况下git是否可以做些什么来呈现差异...不过可能是错误的;git非常强大...
johnny

默认情况下配置它会很好。我的意思是-w或-b或--ignore-all-space。在stackoverflow.com/questions/7310033/…上
Artyom 2013年

8
我同意-b的建议,因为-w将“ abc def”和“ abcdef”视为相同,这是我所需要的很少!
理查德·怀斯曼

3

这是一个古老的问题,但仍然需要定期查看/需要。我想发布到提醒读者像我这样的空格作为OP的问题中提到的一样的正则表达式的定义,包括新行,制表符和空格字符- 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-eolgit config --global core.whitespace cr-at-eol这里

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.