193

場合によっては、いくつかの変更されたファイルと、いくつかの新しいファイル、削除されたファイル、および/または名前が変更されたファイルがあります。実行するとき、git diffまたはgit-logそれらを省略したいので、変更をより適切に見つけることができます。

実際には、新しいファイルと削除されたファイルの名前をコンテンツなしでリストするのが最善です。「古い」の名前を「新しい」に変更した場合、オプションで「古い」と「新しい」の違いを取得したいと思います。

4

4 に答える 4

264

この--diff-filterオプションはdiff、ログとログの両方で機能します。

私は--diff-filter=Mdiff出力をコンテンツの変更のみに制限する多くを使用します。

名前の変更とコピーを検出し、これらをdiff出力で使用するには、-Mとをそれぞれとオプション-Cと一緒に使用できます。RC--diff-filter

于 2011-08-01T09:49:17.087 に答える
96

公式文書

--diff-filter=[(A|C|D|M|R|T|U|X|B)…​[*]]

追加(A)、コピー(C)、削除(D)、変更(M)、名前変更(R)され、タイプ(つまり、通常のファイル、シンボリックリンク、サブモジュールなど)が変更されたファイルのみを選択します(T)、マージされていない(U)、不明である(X)、またはペアリングが壊れている(B)。フィルタ文字の任意の組み合わせ(なしを含む)を使用できます。

*(All-or-none)が組み合わせに追加されると、比較で他の基準に一致するファイルがある場合、すべてのパスが選択されます。他の基準に一致するファイルがない場合、何も選択されません。

また、これらの大文字は小文字で除外することができます。たとえば、--diff-filter = adは、追加および削除されたパスを除外します。

例:追加、変更、変更されたファイルのみを表示し、削除されたファイルを除外します。

git diff --diff-filter=ACM
于 2017-01-18T21:57:18.347 に答える
0

また、これらの大文字は小文字で除外することができます。
たとえば--diff-filter=ad、追加および削除されたパスを除外します。

あなたの場合git diff --diff-filter=adはうまくいくでしょうが、Git 2.36(Q2 2022)を持っていない限り、同じフィルターで下文字と上文字を使用しないようにしてください。

" git diff --diff-filter=aR" manが正しく解析されるようになりました。

Johannes Schindelin()によるcommit 75408cacommit 4d4d4eacommit d843e31(2022年1月28日)を参照してください。( Junio C Hamanoによってマージされました---コミット9a16099、2022年2月16日dscho
gitster

diff-filter:負のビットを探すときはもっと注意してください

サインオフ-作成者:Johannes Schindelin

この--diff-filter=<bits>オプションを使用すると、特定の基準で差分をフィルタリングできます。たとえばR、名前が変更されたファイルのみを表示できます。
また、小文字を使用したフィルターの否定、つまり名前が変更されたファイル以外のすべて
rを表示することもサポートしています。

ただし、ユーザーが小文字を指定したため、 (manがすべてのdiff-filtersをオンにして開始する必要があるかどうかを判断しようとすると、コードは少し熱心になります。引数が大文字で始まる場合は、すべてのビットをオンにして開始します。git diff--diff-filter

さらに悪いことに、diffフィルターを複数の個別のオプションで指定することができます--diff-filter=AM [...] --diff-filter=m

オプションを完全に解析した後、包含/除外フィルターを個別に累積し、「除外フィルターのみが指定された」場合のみを特殊化してみましょう。

于 2022-02-19T23:30:09.500 に答える
-3

更新:チャールズベイリーによって受け入れられた答えは正しいものです。必要な機能はすでにgitに組み込まれています。

gitに組み込まれていないもののアイデアを提供する可能性があるため、この回答はここに残しておきます。


git diffは、新しいファイルと削除されたファイルをと比較して表示し/dev/nullます。/dev/null次のdiffまで次の行を探して除外するもの(私はPerlを自分で使用します)を書くのはそれほど難しいことではありません。次にgit diff ... | the-filter

名前が変更されたファイルは別の問題です。私は(まだ)それに対する良い答えを持っていません。

于 2011-08-01T05:14:27.997 に答える