Ever wanted to look through a Git repository’s history for a commits involving a specific string, but ignoring a certain directory (e.g. for packaged/built code)?

As of Git 1.9, you’re in luck! In the file listing, you can now exclude certain paths by starting them with :(exclude) (or :! but your shell might mess with that):

git log -u -S fooBar -- . ":(exclude)public/pkg/" ":(exclude)vendor/"

This will look through the current directory (., with the -- indicating the end of the options and the beginning of the paths) for commits which add or remove the string “fooBar”, but will not look through the public/pkg/ or vendor/ subdirectories of the current directory.

Tip of the hat to VonC on StackOverflow.

Updated: