Is there an option to restrict git diff
to a given set of file extensions?
For simple file patterns, this seems to work:
$ git ls-files -zm '*.txt' | xargs --null git diff
Whitespace safe, and you can have multiple extensions too:
$ git ls-files -zm '*.h|*.c|*.cpp' | xargs --null git diff
Yes, if you ensure that git expands a glob rather than your shell then it will match at any level so something like this (quotes are important) should work fine.
git diff -- '*.c' '*.h'
To include files recursively (including current dir) this worked for me:
git diff -- '***.py'
Attention that params order makes difference...for example:
git diff master --name-only --relative -- "**/*.ts" "**/*.tsx" "**/*.js" "**/*.jsx" "**/*.vue"
'diff' need to be followed with 'master'