git-diffとgit logで新しいファイルと削除されたファイルを無視する方法は?


154

いくつかの変更されたファイルと、いくつかの新しいファイル、削除されたファイル、または名前が変更されたファイルがある場合があります。行うとき、git diffまたはgit-logそれらを省略したいので、変更を見つけやすくします。

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

回答:


217

--diff-filterオプションは、両方で動作diffし、ログ。

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

リネームしてコピーを検出し、差分出力でこれらを使用するには、使用することができる-M-C一緒に、それぞれRおよびCオプションへ--diff-filter


3
これを使用git logすると、ファイルの追加や削除のみを行うコミットが完全に無視されます。
qqx 2013

7
1つのタイプのデータのみを実際に除外する方法はありますか?何か--diff-filter=!D
カミル・ジエジッチ14

24
@カミルええ、あります。ドキュメントからの引用:Also, these upper-case letters can be downcased to exclude. E.g. --diff-filter=ad excludes added and deleted paths.
LambdaCruiser 2016年

62
  • 公式文書:
--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

2
小文字のオプションを使用してパスを除外し、大文字のオプションを使用してパスを含めることに注意してください。
stuyam

-3

UPDATE:受け入れ答えチャールズ・ベイリーによっては正しいものです。目的の機能はすでにgitに組み込まれています。

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


git diff新しいファイルと削除されたファイルをと比較して表示し/dev/nullます。/dev/null次の行を探して次のdiffまでフィルタリングして除外する何か(私はPerlを自分で使用します)を書くことはそれほど難しくないはずです。その後git diff ... | the-filter

名前を変更したファイルは別の問題です。私には(まだ)良い答えはありません。


これは問題ありませんが、この方法で必要な場合にのみページャー(より少ない)を使用する可能性を失うことになるのではないでしょうか。
maaartinus 2011

@maaartinus:そうだと思います。私はそのことを考えていませんでした。(個人的に、私は「猫」との使用に私のGitのページャを設定し... | less、明示的に。)あなたが見て可能性があるless-E-F(私のシステムで、それは私が出力を見ることはできませんが)オプション。
キーストンプソン

OK、それで結構ですが、他の答えを見てください。
maaartinus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.