これはどこかの設定エラーだと思いますが、どこにあるのかわかりません。通常のgitコマンドは正常に動作するように見えますが、「git diff」は何もしません。安全のため、.gitconfigファイルから外部diffツールを削除しました。これはMacPortsを介してインストールされ、最新バージョン(1.7.2.2)です。
私が見るのは、ワークスペースから「git diff」を実行すると、何もせずに終了するだけです。
$ git --version
git version 1.7.2.2
$ git diff
$
ルートワークスペースから1つのディレクトリをバックアップする場合、「git diff」と入力すると次のようになります。
$ git diff
usage: git diff [--no-index] <path> <path>
私はgitリポジトリの下にいないので、これは予想される動作です。
これをトラブルシューティングするために私ができることに関するアイデアはありますか?
git diff
のデフォルトの出力は、インデックスにコミットまたは追加されていない変更のリストです。変更がない場合、出力はありません。
git diff [--options] [-] […]
このフォームは、インデックス(次のコミットのステージング領域)に対して行った変更を表示します。言い換えれば、違いは、あなたがcouldを使用してgitにさらにインデックスを追加するよう指示しますが、まだ追加していないということです。
詳細については、 documentation をご覧ください。特に、例までスクロールダウンして、このセクションを読んでください。
$ git diff # (1)
$ git diff --cached # (2)
$ git diff HEAD # (3)
ご想像のとおり、ワークスペースの外では、gitは何を比較するのか分からないため、比較する2つのパスを明示的に指定する必要があります。
注: git 1.8.5または1.9以降、2013年第4四半期 :
ユーザーが作業ツリーの外に「
git diff
」を入力すると、自分が1本の中にいると考えて、現在のエラーメッセージはシングルライナーです:
usage: git diff --no-index <path> <path>
彼に間違いを認識させるのに十分ではないかもしれません。
明示的なコマンドラインオプションなしで「
Not a git repository
」モードに陥った場合、エラーメッセージに「--no-index
」を追加します。そうするように指示してください。
見る:
git diff --no-index
が通常の(gitではない)diff
のように動作できることを説明しています。「
diff --no-index
」のドキュメントを明確にします。
リポジトリ内にない場合、--no-index
が暗黙指定され、2つの引数が必須であることを明記してください。
diff-no-index
からのエラーメッセージを明確にし、CWDがリポジトリ内にないため、2つの引数が必須であることをユーザーに通知します。
To compare two paths outside a working tree:
usage: git diff --no-index <path> <path>
作業ディレクトリがクリーンで、前回の更新との違いがない場合は何もしません。ファイルを編集してからgit diffを再度実行すると、差分が表示されます。
実際のリポジトリまたはワークコピーの外部で使用している場合、その動作はGNU diffと同じです。比較する2つのディレクトリまたはファイルに通知する必要があります。例:
git diff old_dir new_dir
。
それらの間に違いがある場合、出力は期待どおりに表示されます。
あなたの場合ではありませんが、おそらくあなたが渡すファイルが存在しないためです
$ git difftool HEAD HEAD^ -- path/that-not-exists
何も起こらない