Find commits that modify file names matching a pattern in a GIT repository

I'd like to find commits in my code base that add video files to throw them out. Is there a way to look for these files in git ?

For example let's say all videos have a filename ending with the extension .wmv ; I'd like to find all commits introducing these files and get rid of them with a fixup or something.

Any ideas ?


You can use git log with a pathspec:

git log --all -- '*.wmv'

This will get you all commits which make changes to .wmv files. yes, this will descend into subdirectories too (but you have to surround your pathspec with single quotes, so it will be passed as is to git).

If you are only interested in commit hashes (scripting etc.) use the git rev-list machinery directly:

git rev-list --all -- '*.wmv'

Under Windows, it might be required to use double quotes instead of single quotes around the pathspec, e.g. "*.wmv"


If you want to remove these files from all your commits, consider rewriting the entire history with the filter-branch command. E.g.,

git filter-branch --index-filter 'git rm --cached --ignore-unmatch -r *.wml' HEAD

You can try this:

git log --follow *.wmv

this will list all commits (with hash) that modified wmv files.