如何使 git diff --ignore-space-change 成为默认值

Posted

技术标签:

【中文标题】如何使 git diff --ignore-space-change 成为默认值【英文标题】:How to make git diff --ignore-space-change the default 【发布时间】:2011-11-10 17:19:36 【问题描述】:

我可能可以设置一个别名,但似乎我应该能够将其设置为配置文件中的一个选项,只是我看不到这样做。

我只需要 --ignore-space-change 在我做差异时,而不是在我做应用或其他任何事情时。我试图通过不与没有实际变化的无关 +/- 行混淆它来使差异更容易理解。

【问题讨论】:

想更改正确答案? :) 现在有一个快捷方式git diff -w,它是--ignore-all-space 的快捷方式:比较行时忽略空格。即使一行有空格而另一行没有空格,这也会忽略差异。 【参考方案1】:

根据 Git Config 手册,没有这样的选项。您唯一的选择是创建别名。

http://git-scm.com/docs/git-config

【讨论】:

我在阅读该页面时也是这么想的。我希望有人知道一种没有记录的方法……哦,好吧。 @Dogbert - 我有同样的问题,只有当我执行 git add -p 时,有什么建议吗? @JoãoPimentelFerreira 这不是默认设置。 有这样的选项***.com/a/53054020/1243247【参考方案2】:

我同意Dogbert's answer 的观点,即最好只使用别名,但另一种选择是将config option diff.external 设置为使用-b 调用diff 的包装脚本。

【讨论】:

【参考方案3】:

如果你使用的是 shell 可用的操作系统,你可以使用 git aliasbash alias

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

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

    --ignore-space-change can be abbreviated to -w 使用别名:git dfw

    bash 别名:运行此命令添加 bash 别名:

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

    打开一个新的终端,你可以直接运行gitdfw来达到同样的效果。

【讨论】:

这应该是公认的答案,因为它实际上对示例有用,而不是“转到此 URL”。 根据current git documentation,-b--ignore-space-change相同。它与 Linux diff 命令一致,其中-w 表示--ignore-all-space。这是一个重要的区别,例如,文本 a b c 被认为与带有 -w 选项的 abc 相同;在代码中,这不太可能是你想要的,所以-b 是一个更好的选择。【参考方案4】:

这并不能完全回答您的问题,但它是为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

它也可能不允许你提交只改变空格的东西,但我相信你可以用一些标志来推翻它。

【讨论】:

OP 正在寻找一种在执行git diff 时设置默认值的方法。这是为apply 做的。【参考方案5】:

如果有一个选项可以做到这一点,那就太好了。但是别名效果很好。以下是我的 .gitconfig 中的相关行:

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

这假设使用我推荐的 colordiff,为您提供 几乎git diff 将显示的内容完全相同的副本,但有两个不同之处:

    colordiff 中的 --- 行的颜色与 git diff 中的同一行不同(非常小的问题) 每个文件一次显示一个(烦人的问题 - 有人知道解决方法吗?)

这是我的 /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 中获得的)

【讨论】:

【参考方案6】:

旧问题 (2011),但现在有一个快捷方式 git diff -w 代表 --ignore-all-space

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

【讨论】:

以上是关于如何使 git diff --ignore-space-change 成为默认值的主要内容,如果未能解决你的问题,请参考以下文章

使 vim 显示带有颜色的 git diff,例如 git diff 命令(red-delete,green-add)

如何使用 vimdiff 来 git diff /svn diff

如何让 diff 像 git-diff 一样工作?

如何提交两个分支的“git diff”?

如何从 git diff 读取输出?

如何从 git diff 读取输出?