How to make git-diff and git log ignore new and deleted files?

The --diff-filter option works with both diff and log.

I use --diff-filter=M a lot which restricts diff outputs to only content modifications.

To detect renames and copies and use these in the diff output, you can use -M and -C respectively, together with the R and C options to --diff-filter.


Official document:

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

Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (i.e. regular file, symlink, submodule, …​) changed (T), are Unmerged (U), are Unknown (X), or have had their pairing Broken (B). Any combination of the filter characters (including none) can be used.

When * (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected.

Also, these upper-case letters can be downcased to exclude. E.g. --diff-filter=ad excludes added and deleted paths.

Example: show only added , changed, modified files exclude deleted files:

git diff --diff-filter=ACM