Поиск git кирки без учета регистра

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

Основываясь на этом 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 и коммитов 218c45a, git 2.0, май 2014.

Другие вопросы по тегам