108

これはどこかの設定エラーだと思いますが、どこにあるのかわかりません。通常の git コマンドは正常に動作しているように見えますが、「git diff」は何もしません。安全のために、.gitconfig ファイルから外部差分ツールを削除しました。これは 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 リポジトリの下にいないため、これは予想される動作である可能性があります。

これをトラブルシューティングするために何ができるかについてのアイデアはありますか?

4

5 に答える 5

126

のデフォルトの出力git diffは、コミットされていない/インデックスに追加されていない変更のリストです。変更がない場合、出力はありません。

git diff [--オプション] [--] […]

このフォームは、インデックス (次のコミットのステージング領域) に対して行った変更を表示するためのものです。言い換えれば、違いは、 git にさらにインデックスに追加するように指示できるものの、まだ行っていないことです。

詳細については、ドキュメントを参照してください。特に、下にスクロールして例を表示し、次のセクションを読んでください。

$ git diff            # (1)
$ git diff --cached   # (2)
$ git diff HEAD       # (3)
  1. 作業コピーとインデックスの差分
  2. HEAD でインデックスを比較する
  3. HEAD で作業コピーを差分します

ご想像のとおり、ワークスペースの外では、git は何を比較するかを認識できないため、比較する 2 つのパスを明示的に指定する必要があるため、使用法に関するメッセージが表示されます。

于 2010-08-27T00:59:42.757 に答える
2

作業ディレクトリがクリーンで、最後の更新との違いがない場合は何もしません。ファイルを編集してから git diff を再度実行すると、差分が表示されます。

于 2010-08-27T00:54:00.553 に答える
1

実際のリポジトリまたは作業コピーの外で使用している場合、その動作は GNU diff と同じです。したがって、比較する 2 つのディレクトリまたはファイルを通知する必要があります。例:

git diff old_dir new_dir.

それらの間に違いがある場合、期待どおりに出力が表示されます。

于 2010-08-27T01:05:03.560 に答える
0

あなたの場合ではありませんが、渡すファイルが存在しない可能性があります

$ git difftool HEAD HEAD^ -- path/that-not-exists

何も起こらない

于 2015-12-28T16:30:27.057 に答える