
Did you ever saw a git diff with file changes you wanted to omit? I recently had to go through a very large git diff – and I realized that some modified files were not needed and I had to somehow remove them from the diff.
To go through the huge diff and remove all patches to certain files manually would be way too much work. Luckily since Git 1.9 you can use pathspec patterns to limit the output of git – and thus the output of git-diff:
git diff devel..feature ':!path/to/file'
git diff devel..feature ':!path/to/*manyfiles'
git diff devel..feature ':!just/a/path'
The exclamation mark is just a short form for (exclude)
. If you use the bracket style you can even add additional “magic words” – for example to make the exclusion case insensitive:
git diff devel..feature ':(exclude,icase)PATH/TO/FILE
Other magic words are literal, top and glob.
Git pathspecs also work with git-grep, git-log and others.