编辑

编辑

我想diff按照描述使用这里在文档中,当我输入man diff.然而,当我输入 时diff,我得到的是这样的:

~ ❯❯❯ diff
usage: git diff --no-index <path> <path>

同样,当我尝试使用 diff,我收到 git 错误,因为-rq支持man diff但不支持git diff

~ ❯❯❯ diff -rq ~/ ~/Desktop
fatal: invalid diff option/value: -rq

我在用着普雷斯托中心两者都有助于提高 git 生产力,但都不会创建不适合的别名至少g据我所知,从 开始。

我运行了一些脚本,例如试图找到一些定义diffgit diff无济于事的东西。

我该如何解决这个问题/找到导致它的原因/覆盖它?

编辑

type diff

diff is a shell function
diff is /usr/bin/diff

答案1

这似乎是来自prezto 定义函数重写diff。它很可能有办法禁用它,但我不知道它是什么(但埃里克恩做到了!)。您有几个选择:

  • /usr/bin/diff或者command diff都将运行diff命令,而不是函数。
  • unset -f diff将删除该diff功能。您可以将其放入 shell 配置中。
  • 正如您所发现的,如果colordiff已安装,它将优先于git diff该功能使用。
  • 最后,您可以从该文件本身中删除或重命名该函数。

这看起来确实是 prezto 中的一个错误。

答案2

我会使用这样的函数

$ diffit () {
command diff "$@"
}

带有参数的别名上的函数

用法:diffit file1 file2

你可以把它放在你的 .bashrc 中
我个人将我的函数集合保存在.bash_functions并且在.bashrc我有

test -f ~/.bash_functions.sh && . $_

答案3

正如 @MichaelHomer 回答的那样,这是一个 prezto 函数,是记录在中的实用程序模块的一部分https://github.com/sorin-ionescu/prezto/tree/master/modules/utility。禁用此功能的方法是:

要禁用差异突出显示,请将以下行添加到 zpreztorc:

zstyle ':prezto:module:utility:diff' color 'no'

或者安装colordiff也会使自定义函数调用它而不是git diff,因为自定义 prezto 的目的diff是:

  • diff突出显示差异输出(需要colordiffGit)。

相关内容