Поиск 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.