I'm trying to find all commits where a particular string or arbitrary capitalisation thereof (e.g. foobar
,FooBar
, fooBar
) was introduced/removed in a git repository.
Based on this SO answer (which covers a different basic use case), I first tried using git grep
git rev-list --all | xargs git grep -i foobar
This was pretty awful, as it only gave information as to whether the string is present in a commit, so I ended up with loads of superfluous commits.
I then tried pickaxe
, which got me most of the way there, e.g.
git log --pickaxe-regex -S'foobar' --oneline
This only got the lowercase foobar
. I tried the -i
flag, but that doesn't seem to apply to the --pickaxe-regex
option. I then resorted to using patterns like this, which got me a bit further:
git log --pickaxe-regex -S'.oo.ar' --oneline
Is there a way to make --pickaxe-regex
do case-insensitive matching?
I'm using git v1.7.12.4.
-i
won't work with'.oo.ar'
(regexp) before Git 2.0. – VonC