У git 1.9.0 до " s " exclude
було додано "магічне слово" pathspec
. Отже, якщо ви хочете шукати foobar
у кожному файлі, крім відповідних, *.java
ви можете зробити:
git grep foobar -- './*' ':(exclude)*.java'
Або використовуючи !
"коротку форму" для виключення:
git grep foobar -- './*' ':!*.java'
Зауважте, що у версіях git до v2.12 при використанні виключення pathspec
ви повинні мати принаймні один "включно" pathspec
. У наведених вище прикладах це ./*
(рекурсивно включати все під поточний каталог). У git v2.13 це обмеження було знято і git grep foobar -- ':!*.java'
працює без ./*
.
Ви також можете використати щось на зразок :(top)
(коротка форма :/
:), щоб включити все, що знаходиться вгорі репо. Але тоді ви, ймовірно, також захочете скорегувати своє виключення, pathspec
щоб почати також зверху: :/!*.java
(інакше це виключить лише *.java
файли з вашого поточного каталогу).
Є хороша довідка для всіх "магічних слів", дозволених на pathspec
сайті git-scm.com (або просто git help glossary
). Чомусь документи на kernel.org дійсно застаріли, хоча вони часто з’являються першими в пошуку Google.