Нечувствительность к регистру 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.