10

ファイルを編集しているとしましょう。ファイルを保存するgit-diffと、インデックスに関連する変更が表示されます。「リアルタイム」差分のために、最初にファイルを保存せずに、インデックスに関連する変更を取得したいと思います。

1つの解決策は、保存されていない変更を一時ファイルに書き込み(つまり、ファイルを別の場所に保存し)、ステージングされたファイルを別の一時ファイル(git show :file > tempfile2)に書き込み、次にgit-diff tempfile tempfile2。しかし、それはエレガントではないようです。

もっと良い方法はありますか?

4

2 に答える 2

12

git 1.5.1以降、stdinと比較するオプションがありました-それは文書化されていないだけです

$ echo foo | git diff --no-index -- my_file -

これをもう少し試してみると、これはOP(または私)が望んでいたものではない可能性があることに気付きました-ファイルの現在の状態をstdinに差分し、ファイルの最後にコミットされた状態をstdinに差分します。このような何かがそれをします

$ echo foo | diff -u <(git show :my_file) -

これは、diffを直接呼び出すことを意味し、gitconfigの一部の設定を取得しない可能性があることに注意してください。基本的にamsが彼の答えで言うように。

于 2013-08-11T16:19:33.533 に答える
3

アッシュベルリンの答えを改善する。

これにより、git-diffの優れた機能を使用できます。

git show :file | git diff --no-index -- - temp_saved_path

一時ファイルに書き込む必要があるため、これでも希望するほど便利ではない可能性があることに注意してください。ファイルを保存するまで、変更はディスク上にまったくないか(メモリ内のみ)、またはエディターに依存するある種の一時ファイルにあります。Vimがこれを1つのステップでシームレスに実行できる可能性はありますが、私は十分な知識がありません。

于 2014-10-22T20:07:44.277 に答える