Мне кажется, это нормально работает:
$ echo 'あいうえお' > afile
$ git add afile
$ grep 'あ[い]う' afile
あいうえお
$ git grep 'あ[い]う'
afile:あいうえお
Может быть, вы как-то настроили patternType
по умолчанию?
grep.patternType
Установить поведение соответствия по умолчанию. Использование значения basi c, extended, fixed или perl включит параметр --basi c -regexp, --extended-regexp, --fixed-strings или - perl -regexp соответственно, в то время как значение default вернется к поведению сопоставления по умолчанию.
Попробуйте вызвать git grep -G
для принудительного использования базовых c паттернов и посмотрите, что произойдет. Или git config --get grep.patternType
, чтобы увидеть, было ли установлено какое-то нечетное значение.
Также имейте в виду, что git grep просматривает только "отслеживаемые файлы в рабочем дереве, BLOB-объекты, зарегистрированные в индексном файле, или BLOB-объекты в данные объекты дерева ". Поэтому, если вы добавляете строку в файл, но не добавляете файл в индекс, совпадения не будет.
Аналогично, если строка находится в старом коммите, что очень сильно отличается от hg grep
(который просматривает историю по умолчанию)