如何将git diff --ignore-space-change设为默认值

122

我可能可以设置一个别名,但似乎我应该能够将其设置为配置文件中的选项,只是我不知道如何操作。

我仅希望在执行差异比较(diff)时使用 --ignore-space-change,而不是在执行应用(apply)或其他任何操作时使用。 我试图通过不在差异比较中添加无实际更改的多余 +/- 行来使差异比较更易于理解。


2
你是否想要更改正确答案? :) - igorsantos07
2
现在有一个“git diff -w”的快捷方式,它是“--ignore-all-space”的快捷方式:当比较行时忽略空格。即使一行有空格而另一行没有,这也会忽略差异。 - João Pimentel Ferreira
6个回答

109

如果您使用Shell可用的操作系统,您可以使用git aliasbash alias

  1. git alias:运行此命令添加别名:

    git config --global alias.dfw 'diff --ignore-space-change'

    --ignore-space-change可以缩写为-w,使用别名时输入:git dfw

  2. bash alias:运行此命令添加bash alias:

    echo "alias gitdfw='git diff --ignore-space-change'">>~/.profile

    打开一个新的终端就可以直接运行gitdfw达到相同的效果。


10
这应该是被接受的答案,因为它提供了实际示例,而不仅仅是“转到此网址”的简单回答。 - DrStrangepork
10
根据当前的git文档-b--ignore-space-change相同。这与Linux的diff命令一致,其中-w表示--ignore-all-space。这是一个重要的区别,因为例如,在-w选项下,文本a b c被认为与abc相同;在代码中,这可能不是您想要的,因此-b是更好的选择。 - IpsRich

20

我也是从那个页面上看到的。我还希望有人知道一些未记录的方法... 哎,算了。 - boatcoder
@Dogbert - 我遇到了同样的问题,只有当我执行 git add -p <file_name> 时才会出现,有什么建议吗? - Guy Avraham
@JoãoPimentelFerreira 这并不意味着它是默认的。 - DylanYoung
有这样的选项 https://dev59.com/hGw05IYBdhLWcg3wUAQ0#53054020 - João Pimentel Ferreira

15

虽然问题是2011年的旧问题,但现在有一个快捷方式git diff -w,它表示--ignore-all-space

比较行时忽略空格。即使一行有空格而另一行没有空格,这也会忽略差异。


11

我同意Dogbert的回答,最好只是使用别名,但另一个选择是将diff.external配置选项设置为调用带有-b参数的diff的包装脚本。


10

虽然这并没有完全回答你的问题,但下面是一种类似于apply的实现方法。

来自man git-config

 apply.whitespace
       Tells git apply how to handle whitespaces, in the same way
       as the --whitespace option. See git-apply(1).

打开你的~/.gitconfig或者./.git/config/文件,然后添加如下内容:

[apply]
   whitespace = nowarn

它可能不允许您提交仅更改空格的内容,但我确信您可以使用一些标志来覆盖它。


1
OP正在寻找一种在执行git diff时设置默认值的方法。这将为apply完成此操作。 - denishaskin

2

如果有一个选项可以实现这一点就太好了,但是别名也可以很好地工作。以下是我 .gitconfig 文件中相关的行:

[diff]
    tool = mydiff
[difftool "mydiff"]
    cmd = "colordiff -NuBbwi \"$LOCAL\" \"$REMOTE\" | less -R"
[difftool]
    prompt = false
[alias]
    dt = difftool

这里假设您使用colordiff,我建议这么做,这样你几乎可以得到与git diff完全相同的输出,但有两个区别:
  1. 在colordiff中,---行的颜色不同于在git diff中的颜色(非常小的问题)
  2. 每个文件都是单独显示的(令人烦恼的问题 - 有人知道如何解决吗?)
这是我的/etc/colordiffrc:
plain=off
newtext=green
oldtext=red
diffstuff=cyan
cvsstuff=red

Mac OS X 10.9.2,git版本1.8.5.2(Apple Git-48)。

(colordiff是从brew获取的)


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