українська мова ▾ Topics ▾ Latest version ▾ git-grep last updated in 2.45.0

НАЗВА

git-grep - Друк ліній, що відповідають шаблону

СИНОПСИС

git grep [-a | --text] [-I] [--textconv] [-i | --ignore-case] [-w | --word-regexp]
	   [-v | --invert-match] [-h|-H] [--full-name]
	   [-E | --extended-regexp] [-G | --basic-regexp]
	   [-P | --perl-regexp]
	   [-F | --fixed-strings] [-n | --line-number] [--column]
	   [-l | --files-with-matches] [-L | --files-without-match]
	   [(-O | --open-files-in-pager) [<pager>]]
	   [-z | --null]
	   [ -o | --only-matching ] [-c | --count] [--all-match] [-q | --quiet]
	   [--max-depth <depth>] [--[no-]recursive]
	   [--color[=<when>] | --no-color]
	   [--break] [--heading] [-p | --show-function]
	   [-A <post-context>] [-B <pre-context>] [-C <context>]
	   [-W | --function-context]
	   [(-m | --max-count) <num>]
	   [--threads <num>]
	   [-f <file>] [-e] <pattern>
	   [--and|--or|--not|(|)|-e <pattern>…​]
	   [--recurse-submodules] [--parent-basename <basename>]
	   [ [--[no-]exclude-standard] [--cached | --untracked | --no-index] | <tree>…​]
	   [--] [<pathspec>…​]

ОПИС

Шукати вказані шаблони у відстежуваних файлах у робочому дереві, блобах, зареєстрованих у файлі індексу, або блобах у заданих об’єктах дерева. Шаблони – це списки одного або кількох виразів пошуку, розділених символами нового рядка. Порожній рядок як вираз пошуку відповідає всім рядкам.

ОПЦІЇ

--cached

Замість пошуку відстежуваних файлів у робочому дереві, шукайте блоби, зареєстровані в індексному файлі.

--untracked

Окрім пошуку у відстежуваних файлах робочого дерева, також можна шукати у невідстежуваних файлах.

--no-index

Шукати файли в поточному каталозі, який не керується Git, або ігнорувати той факт, що поточний каталог керується Git. Це досить схоже на запуск звичайної утиліти grep(1) з вказаною опцією -r, але з деякими додатковими перевагами, такими як використання шаблонів pathspec для обмеження шляхів; див. запис pathspec у gitglossary[7] для отримання додаткової інформації.

Цей параметр не можна використовувати разом з --cached або --untracked. Див. також grep.fallbackToNoIndex у розділі «КОНФІГУРАЦІЯ» нижче.

--no-exclude-standard

Також шукати в ігнорованих файлах, не враховуючи механізм .gitignore. Корисно лише з --untracked.

--exclude-standard

Не звертати уваги на ігноровані файли, вказані за допомогою механізму .gitignore. Корисно лише під час пошуку файлів у поточному каталозі з параметром --no-index.

--recurse-submodules

Рекурсивно шукати в кожному активному та витягнутому з репозиторію підмодулі. При використанні в поєднанні з опцією <tree> префіксом усіх виводів підмодулів буде назва об’єкта <tree> батьківського проекту. Цю опцію не можна використовувати разом з --untracked, і вона не має ефекту, якщо вказано --no-index.

-a
--text

Обробляти бінарні файли так, ніби вони є текстом.

--textconv

Дотримуватись налаштувань фільтра textconv.

--no-textconv

Не враховувати налаштування фільтра textconv. Це значення за замовчуванням.

-i
--ignore-case

Ігноруйте відмінності у регістрі літер між шаблонами та файлами.

-I

Не збігається зі шаблоном у двійкових файлах.

--max-depth <depth>

Для кожного <pathspec>, заданого в командному рядку, спуститися максимум на рівні <depth> каталогів. Значення -1 означає відсутність обмежень. Цей параметр ігнорується, якщо <pathspec> містить активні шаблони підстановки. Іншими словами, якщо "a*" відповідає каталогу з назвою "a*", "*" відповідає буквально, тому --max-depth все ще ефективний.

-r
--recursive

Те саме, що й --max-depth=-1; це значення за замовчуванням.

--no-recursive

Те саме, що --max-depth=0.

-w
--word-regexp

Зіставляти шаблон лише на межі слова (або починати на початку рядка, або перед ним стоїть символ, що не є словом; закінчувати в кінці рядка або після нього стоїть символ, що не є словом).

-v
--invert-match

Виберіть неспівпадаючі рядки.

-h
-H

За замовчуванням команда показує ім’я файлу для кожного збігу. Опція -h використовується для приховування цього виводу. -H призначена для повноти картини та не виконує жодних дій, окрім перевизначення -h, заданого раніше в командному рядку.

--full-name

Під час виконання з підкаталогу команда зазвичай виводить шляхи відносно поточного каталогу. Цей параметр примусово виводить шляхи відносно головного каталогу проекту.

-E
--extended-regexp
-G
--basic-regexp

Використовуйте розширений/базовий регулярний вираз POSIX для шаблонів. За замовчуванням використовується базовий регулярний вираз.

-P
--perl-regexp

Використовуйте регулярні вирази, сумісні з Perl, для шаблонів.

Підтримка цих типів регулярних виразів є необов’язковою залежністю під час компіляції. Якщо Git не було скомпільовано з їх підтримкою, надання цієї опції призведе до його завершення роботи.

-F
--fixed-strings

Використовуйте фіксовані рядки для шаблонів (не інтерпретуйте шаблон як регулярний вираз).

-n
--line-number

Додайте номер рядка до відповідних рядків.

--column

Додайте префікс 1-індексованого байтового зсуву першого збігу від початку рядка збігу.

-l
--files-with-matches
--name-only
-L
--files-without-match

Замість того, щоб показувати кожен рядок зі збігами, показуйте лише назви файлів, які містять (або не містять) збіги. Для кращої сумісності з git diff, --name-only є синонімом --files-with-matches.

-O[<pager>]
--open-files-in-pager[=<pager>]

Відкрийте відповідні файли у пейджері (не у виводі grep). Якщо пейджером є "less" або "vi", і користувач вказав лише один шаблон, перший файл автоматично позиціонується за першим збігом. Аргумент pager є необов’язковим; якщо його вказано, він має бути прив’язаний до опції без пробілу. Якщо pager не вказано, буде використано пейджер за замовчуванням (див. core.pager у git-config[1]).

-z
--null

Використовуйте \0 як роздільник для шляхів у виводі та виводьте їх дослівно. Без цієї опції шляхи з «незвичайними» символами взяті в лапки, як пояснено для змінної конфігурації core.quotePath (див. git-config[1]).

-o
--only-matching

Вивести лише ті частини рядка, що збігаються (не порожні), причому кожну таку частину вивести на окремий рядок виведення.

-c
--count

Замість того, щоб показувати кожен збіг рядків, покажіть кількість збігів.

--color[=<when>]

Показувати кольорові збіги. Значення має бути always (за замовчуванням), never або auto.

--no-color

Вимкнути підсвічування збігів, навіть якщо у файлі конфігурації задано кольоровий вивід за замовчуванням. Те саме, що й --color=never.

--break

Вивести порожній рядок між збігами з різних файлів.

--heading

Показувати назву файлу над збігами у цьому файлі, а не на початку кожного показаного рядка.

-p
--show-function

Показати попередній рядок, що містить назву функції, що відповідає значенню, якщо тільки рядок, що відповідає значенню, не є самою назвою функції. Назва визначається так само, як git diff обчислює заголовки патчів hunk (див. Визначення власного заголовка hunk у gitattributes[5]).

-<num>
-C <num>
--context <num>

Показати <num> початкових та кінцевих рядків, а також розмістити рядок, що містить --, між суміжними групами збігів.

-A <num>
--after-context <num>

Показати <num> кінцевих рядків та розмістити рядок, що містить --, між суміжними групами збігів.

-B <num>
--before-context <num>

Показати <num> початкових рядків та розмістити рядок, що містить --, між суміжними групами збігів.

-W
--function-context

Показати навколишній текст від попереднього рядка, що містить назву функції, до рядка перед наступною назвою функції, фактично показуючи всю функцію, в якій було знайдено збіг. Назви функцій визначаються так само, як git diff обчислює заголовки патчів (див. Визначення власного заголовка hunk у gitattributes[5]).

-m <num>
--max-count <num>

Обмежте кількість збігів у файлі. При використанні опції -v або --invert-match пошук зупиняється після вказаної кількості незбігів. Значення -1 поверне необмежену кількість результатів (за замовчуванням). Значення 0 призведе до негайного завершення з ненульовим статусом.

--threads <num>

Кількість робочих потоків grep для використання. Див. розділи «НОТИ ЩОДО ПОТОКІВ» та grep.threads у розділі «КОНФІГУРАЦІЯ» для отримання додаткової інформації.

-f <file>

Зчитувати шаблони з <файлу>, по одному на рядок.

Передача шаблону через <file> дозволяє забезпечити шаблон пошуку, що містить \0.

Не всі типи шаблонів підтримують шаблони, що містять \0. Git виведе помилку, якщо заданий тип шаблону не може підтримувати такий шаблон. Тип шаблону --perl-regexp, компільований з серверною частиною PCRE v2, має найширшу підтримку для цих типів шаблонів.

У версіях Git до версії 2.23.0 шаблони, що містять \0, вважалися виправленими. Це ніколи не було задокументовано, також існували дивні та недокументовані взаємодії, наприклад, між шаблонами, що не належать до ASCII, що містять \0 та --ignore-case.

У майбутніх версіях ми можемо навчитися підтримувати шаблони, що містять \0, для більшої кількості пошукових серверів, до того часу ми помремо, коли відповідний тип шаблону не підтримуватиме їх.

-e

Наступний параметр – це шаблон. Цей параметр слід використовувати для шаблонів, що починаються з -, і його слід використовувати у скриптах, що передають введені користувачем дані до grep. Кілька шаблонів об’єднуються за допомогою або.

--and
--or
--not
( …​ )

Вкажіть, як поєднуються кілька шаблонів за допомогою логічних виразів. --or – це оператор за замовчуванням. --and має вищий пріоритет, ніж --or. Потрібно використовувати -e.

--all-match

Якщо задано кілька виразів шаблонів у поєднанні з --or, цей прапорець вказано, щоб обмежити збіг файлами, які містять рядки, що відповідають усім їм.

-q
--quiet

Не виводьте рядки, що збігаються; натомість завершіть роботу зі статусом 0, якщо збіг є, та зі статусом, нерівним нулю, якщо його немає.

<tree>…​

Замість пошуку відстежуваних файлів у робочому дереві, шукайте блоби у заданих деревах.

--

Сигналізує про кінець опцій; решта параметрів є обмежувачами <pathspec>.

<pathspec>…​

Якщо вказано, обмежте пошук шляхами, що відповідають принаймні одному шаблону. Підтримуються як шаблони leading paths match, так і glob(7).

Для отримання додаткової інформації про синтаксис <pathspec> див. запис pathspec у gitglossary[7].

ПРИКЛАДИ

git grep time_t' -- *.[ch]

Шукає time_t у всіх відстежуваних файлах .c та .h у робочому каталозі та його підкаталогах.

git grep -e '#define' --and \( -e MAX_PATH -e PATH_MAX \)

Шукає рядок, що містить #define та MAX_PATH або PATH_MAX.

git grep --all-match -e NODE -e Unexpected

Шукає рядок із NODE або Unexpected у файлах, що містять рядки, що відповідають обом.

git grep solution -- :^Documentation

Шукає рішення, виключаючи файли в Документації.

НОТАТКИ ЩОДО РИТОК

Опція --threads (і конфігурація grep.threads) буде ігноруватися, коли використовується --open-files-in-pager, що призведе до однопотокового виконання.

Під час grepping сховища об’єктів (з --cached або наданням об’єктів дерева), робота з кількома потоками може працювати повільніше, ніж з одним потоком, якщо задано --textconv і є забагато перетворень тексту. Таким чином, якщо в цьому випадку спостерігається низька продуктивність, може бути бажаним використання --threads=1.

КОНФІГУРАЦІЯ

Все, що знаходиться нижче цього рядка в цьому розділі, вибірково включено з документації git-config[1]. Вміст такий самий, як і там:

Warning

Missing uk/config/grep.adoc

See original version for this content.

GIT

Частина набору git[1]