Нечувствительность к регистру git поиск кирки

Я пытаюсь найти все коммиты, где в репозитории git была введена/удалена определенная строка или произвольная ее капитализация (например, foobar, foobar, foobar).

Основываясь на этом SO-ответе (который охватывает другой базовый вариант использования), я сначала попытался использовать git grep

git rev-list --all | xargs git grep -i foobar

Это было довольно ужасно, так как оно давало только информацию о том, присутствует ли строка в фиксации, поэтому я столкнулся с множеством лишних коммитов.

Затем я попробовал pickaxe, который доставил мне большую часть пути, например.

git log --pickaxe-regex -S'foobar' --oneline

Это получилось только в нижнем регистре foobar. Я попробовал флаг -i, но это не похоже на параметр --pickaxe-regex. Затем я прибегал к использованию таких шаблонов, которые меня немного улучшили:

git log --pickaxe-regex -S'.oo.ar' --oneline

Есть ли способ сделать --pickaxe-regex совпадение без учета регистра?

Я использую git v1.7.12.4.

Ответы

Ответ 1

Способ использования -i с кирки (см. commit accccde, git 1.7.10, апрель 2012 г.):

git log -S foobar -i --oneline
# or
git log --regexp-ignore-case -Sfoobar
# or
git log -i -Sfoobar

Обратите внимание, что с версиями 1.x git эта опция не будет работать с регулярными выражениями, только с фиксированной строкой. Он работает с регулярными выражениями только с git 2.0 и commit 218c45a, git 2.0, май 2014.