web-dev-qa-db-ja.com

`diff`が` git diff`を実行する原因は何ですか?

説明されているようにdiffを使用したい ここ そしてドキュメントでman diffと入力すると表示されます。ただし、diffと入力すると、次のようになります。

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

同様に、usediffを実行しようとすると、-rqman diffでサポートされているため、gitエラーが発生しますがgit diffではありません:

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

私は Preztohub を使用していますが、どちらもgitの生産性に役立ちますが、どちらもleast私が知る限り、gで始まります。

this のようないくつかのスクリプトを実行して、diffgit diffに定義しているものを見つけようとしましたが、役に立ちませんでした。

これを修正する/原因を見つける/オーバーライドするにはどうすればよいですか?

編集

ランtype diff

diff is a Shell function
diff is /usr/bin/diff
7
Ben Saufley

これは diffをオーバーライドする関数を定義するprezto からのようです。それを無効にする方法があるかもしれませんが、それが何であるかはわかりません( しかしericbnはそうします! )。いくつかのオプションがあります。

  • /usr/bin/diffまたはcommand diffは両方とも、関数ではなくdiffコマンドを実行します。
  • unset -f diffdiff関数を削除します。それをシェル構成に入れることができます。
  • ご存知のように、colordiffがインストールされている場合、関数によってgit diffよりも優先して使用されます。
  • 最後に、そのファイル自体から関数を削除または名前変更できます。

これは本当にpreztoの機能ミスのようです。

9
Michael Homer

このような関数を使用します

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

パラメータがあるのでエイリアス上の関数

使用法:diffit file1 file2

あなたはそれをあなたの.bashrcに入れることができます
個人的には、関数のコレクションを.bash_functions.bashrcに保持しています。

test -f ~/.bash_functions.sh && . $_
2
Michael Durrant

@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はdiff出力を強調表示します(colordiffまたはGitが必要です)。
1
ericbn