SYNOPSIS
gitgrep[-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>…]
DESCRIPTION
作業ツリーの追跡ファイル(tracked files)内または、インデックスファイルに登録されているブロブまたは、指定のツリーオブジェクトのブロブ、で指定のパターンを探します。 パターンは、改行文字(newline characters)で区切られた1つ以上の検索式のリストです。 検索式としての空文字列は、すべての行にマッチします。
OPTIONS
-
--cached -
作業ツリーで追跡中のファイル(tracked files)を検索する代わりに、インデックスファイルに登録されているブロブを検索します。
-
--untracked -
作業ツリーで、追跡中のファイル(tracked files)を検索するだけでなく、追跡されていないファイル(untracked files)も検索します。
-
--no-index -
現在のディレクトリ内で Git で管理されていないファイルを検索するか、 または、 現在のディレクトリが Git で管理されていることを無視して検索します。 これは、 通常の
grep(1) ユーティリティを-rオプションを指定して実行するのにかなり似ていますが、 パスを制限するためのパススペック・パターンを使用できるなどの追加の利点があります。 詳細については、 gitglossary(7) の「pathspec」エントリーを参照してください。このオプションは、
--cachedまたは--untrackedと一緒に使用することはできません。 下記の「CONFIGURATION」のgrep.fallbackToNoIndexも参照してください。 -
--no-exclude-standard -
また、
.gitignoreメカニズムを尊重せずに、無視されたファイル(ignored files)を検索します。--untrackedでのみ役立ちます。 -
--exclude-standard -
.gitignoreメカニズムを介して指定されている、無視されたファイル(ignored files)に注意を払わないでください。--no-indexを使用して現在のディレクトリ内のファイルを検索する場合にのみ役立ちます。 -
--recurse-submodules -
リポジトリ内で、 アクティブかつチェックアウトされている各サブモジュールを再帰的に検索します。 <tree> オプションと組み合わせて使用すると、 すべてのサブモジュール出力のプレフィックスは、 親プロジェクトの <tree> オブジェクトの名前になります。 このオプションは
--untrackedと一緒に使用することはできません。--no-indexが指定されている場合は効果がありません。 -
-a -
--text -
バイナリファイルをテキストであるかのように処理します。
-
--textconv -
textconvフィルター設定を尊重します。
-
--no-textconv -
textconvフィルター設定を尊重しません。 これがデフォルトです。
-
-i -
--ignore-case -
パターンとファイルの間で英大文字小文字の違いは無視(ignore case)してください。
-
-I -
バイナリファイルでパターンのマッチをしないでください。
-
--max-depth<depth> -
コマンドラインで指定された<pathspec>ごとに、最大 <depth> レベルまでディレクトリを降りていくかを指定します。 -1 は、制限がないことを意味します。 <pathspec> にアクティブなワイルドカード(active wildcards)が含まれている場合、このオプションは無視されます。言い換えると、
a* がa* という名前のディレクトリと一致する場合、 * は文字通り一致するため、--max-depthは引き続き有効です。 -
-r -
--recursive -
--max-depth=-1と同一です。これがデフォルトです。 -
--no-recursive -
--max-depth=0と同一です。 -
-w -
--word-regexp -
パターンは単語(word)単位でのみ一致します(行頭で開始するかまたは単語以外の文字が先行するかのいずれか。行末で終わるか、単語以外の文字が続きます)。
-
-v -
--invert-match -
一致しない行を選択します。
-
-h -
-H -
デフォルトでは、コマンドは各々マッチしたファイル名を表示します。
-hオプションは、この出力を抑制するために使用されます。-Hはオプション機能として完全を期すためにあり、コマンドラインで-H以前に指定した-hを打ち消す以外は何もしません。 -
--full-name -
サブディレクトリから実行する場合、コマンドは通常、現在のディレクトリからの相対パスを出力します。 このオプションは、プロジェクトの最上位ディレクトリを基準にしたパスを出力します。
-
-E -
--extended-regexp -
-G -
--basic-regexp -
パターンにはPOSIX 拡張/基本 正規表現を使用します。 デフォルトでは基本正規表現を使用します。
-
-P -
--perl-regexp -
パターンにはPerl互換の正規表現を使用してください。
これらのタイプの正規表現のサポートは、コンパイル時オプションに依存します。 Gitがこれらのサポート付きでコンパイルされていない場合、このオプションを指定するとGitが停止(die)します。
-
-F -
--fixed-strings -
パターンには固定文字列を使用します(パターンを正規表現として解釈しないでください)。
-
-n -
--line-number -
マッチした行の前に行番号を付けます。
-
--column -
マッチがあった行の中で(複数マッチするかもしれないので)、最初にマッチしたぶんの行頭(行頭を0じゃなくて1とする)からのオフセットバイト(1-indexed byte-offset)を行頭に置きます。
-
-l -
--files-with-matches -
--name-only -
-L -
--files-without-match -
一致したすべての行を表示する代わりに、一致を含む(または含まない;
--files-without-match)ファイル名のみを表示します。gitdiffとの互換性を高めるために、--name-onlyが--files-with-matchesの同義語となっています。 -
-O[<pager>] -
--open-files-in-pager[=<pager>] -
一致するファイルをページャーで開きます(ただし、
grepの出力ではありません)。 ページャーがたまたま「less」または「vi」であり、ユーザーが1つのパターンのみを指定した場合、 最初に開かれるファイルは自動的に最初のマッチになります。pager引数はオプションです。 指定する場合は、 スペースなしでオプションに固定する必要があります。pagerが指定されていない場合、 デフォルトのページャーが使用されます(git-config(1) の`core.pager` を参照)。(訳注:lessで次のファイルに移動するには :n とタイプする。詳しくはmanページ参照) -
-z -
--null -
出力のパス名の区切り文字として \0 を使用し、そのまま(verbatim)出力します。 このオプションがないと、構成変数
core.quotePathで説明されているように、「異常な」文字を含むパス名がクォートされます(git-config(1) 参照)。 -
-o -
--only-matching -
マッチがある行のマッチする(空でない)部分のみを出力し、行内で複数マッチした場合、そのような各部分を別々の行に出力します。(訳注: 例えば
gitgrep-n--break--column--only-matchinghoge) -
-c -
--count -
マッチした行を全て表示する代わりに、ファイル毎にマッチした行の行数を表示します。
-
--color[=<when>] -
色付きのマッチ表示します。 値は always (デフォルト) または never または auto である必要があります。
-
--no-color -
構成ファイルがデフォルトでカラー出力を提供している場合でも、マッチのハイライト表示をオフにします。
--color=neverと同じです。 -
--break -
一致の出力で、異なるファイルの間に(区切りとして)1行の空行を出力します。(訳注:例
gitgrep--break--headinghoge) -
--heading -
マッチしたのを表示する各行の初めファイル名を表示するのではなく、表示するファイル毎に、その直前にファイル名だけの行を出力します。 (訳注:例
gitgrep--break--headinghoge) -
-p -
--show-function -
マッチした行が関数名そのものでない限り、 マッチした関数名を含む先行の行を表示します。 名前は、
gitdiffがパッチハンクヘッダーを処理するのと同じ方法で決定されます (gitattributes(5) の「Defining a custom hunk-header」参照)。 -
-<num> -
-C<num> -
--context<num> -
各マッチ行ごとに <num>行の先行する行と後続する行も表示し、 マッチしたグループ毎に
--行を挿入します。 -
-A<num> -
--after-context<num> -
各マッチ行ごとに <num> 行の後続行も表示し、マッチしたグループ毎に
--行を挿入します。 -
-B<num> -
--before-context<num> -
各マッチした行ごとに <num> 行の先行する行も表示し、 マッチしたグループ毎に
--行を挿入します。 -
-W -
--function-context -
関数名を含む前の行から次の関数名の前の行までの周囲のテキストを表示し、マッチした関数全体を効果的に示します。 関数名は、
gitdiffがパッチハンクヘッダーを処理するのと同じ方法で決定されます(gitattributes(5) の「Defining a custom hunk-header」参照)。 -
-m<num> -
--max-count<num> -
ファイルごとのマッチ数を制限します。
-vまたは--invert-matchオプションを使用すると、指定された数の不一致の後に検索(search)が停止(stop)します。 -1 の値は無制限の結果を返します (デフォルト)。 0 の値は、ゼロ以外のステータスですぐに終了します。 -
--threads<num> -
使用するgrepワーカースレッドの数。 詳細については、「CONFIGURATION」の「NOTES ON THREADS」と「grep.threads」を参照してください。
-
-f<file> -
<file>から1行に1つずつパターンを読み取ります。
<file>を介してパターンを渡すと、 \0 を含む検索パターンを指定できます。
すべてのパターンタイプが \0 を含むパターンをサポートしているわけではありません。 特定のパターンタイプがそのようなパターンをサポートできない場合、Gitはエラーになります。 PCRE v2 バックエンドに対してコンパイルされた場合の
--perl-regexpパターンタイプは、これらのタイプのパターンを最も広くサポートしています。Git の 2.23.0 より前のバージョンでは、 \0 を含むパターンは黙って修正されます。 これは全く文書化されておらず、また、例えば \0 を含む非ASCIIパターンと
--ignore-caseとの間の文書化されていない奇妙な相互作用がありました。将来のバージョンでは、より多くの検索バックエンドが \0 を含むパターンをサポートする可能性がありますが、それまでは、問題のパターンタイプがそれらをサポートしない場合は終了(die)します。
-
-e -
これに続く次のパラメータはパターンであることを示します。 このオプションは、
-で始まるパターンに使用する必要があり、ユーザー入力をgrepに渡すスクリプトで使用する必要があります。複数のパターンは or 結合されます。 -
--and -
--or -
--not -
(
...) -
ブール式を使用して、複数のパターンを組み合わせる方法を指定します。
--orはデフォルトの演算子です。--andは--orよりも優先されます。-eはすべてのパターンに使用する必要があります。 -
--all-match -
--orと組み合わせて複数のパターン式を指定する場合、このフラグを指定して、すべてにマッチする行を持つファイルにマッチを制限します。 -
-q -
--quiet -
マッチした行を出力しないでください。 代わりに、マッチした場合は終了ステータス0で終了し、マッチしない場合は終了ステータスがゼロ以外で終了します。
- <tree>...
-
作業ツリーで追跡中のファイル(tracked files)を検索する代わりに、指定のツリーでブロブを検索します。
-
-- -
コマンドにオプション指定の終了を教えます。 残りのパラメーターは <pathspec> リミッターです。
- <pathspec>...
-
指定されている場合は、検索を少なくとも1つのパターンに一致するパスに制限します。 パスの先行一致 と glob(7)パターン の両方がサポートされます。
<pathspec> 構文の詳細については、 gitglossary(7) の「pathspec」エントリを参照してください。
EXAMPLES
-
gitgrep'time_t'--'*.[ch]' -
作業ディレクトリとそのサブディレクトリで、追跡中(tracked)のすべての .c ファイルと .h ファイルで
time_tを探します。 -
gitgrep-e'#define'--and\(-eMAX_PATH-ePATH_MAX\) -
#define かつ、
MAX_PATHまたはPATH_MAXのいずれか、を持つ行を探します。 -
gitgrep--all-match-eNODE-eUnexpected -
各ファイル内で
NODEまたはUnexpectedを探し、かつ、NODEとUnexpectedの両方を持つ行があるファイルだけを表示します。 -
gitgrepsolution--:^Documentation -
Documentationファイルを除くファイル達からsolutionを探します。
NOTES ON THREADS
--open-files-in-pager が使用されている場合、 --threads オプション(および grep.threads 構成)は無視され、シングルスレッド実行が強制されます。
オブジェクトストアを(--cached を使用して、またはツリーオブジェクトを指定して)grepする場合に、 --textconv が指定さていて、 テキスト変換が多すぎると、複数のスレッドで実行するとシングルスレッドよりもパフォーマンスが低下する可能性があります。 このようなケースでパフォーマンスが低下する時は、 --threads=1 を使用することが望ましい場合があります。
CONFIGURATION
このセクションの以下のすべては、 git-config(1) ドキュメントの抜粋です。 内容は git-config(1) ドキュメント にあるものと同一です:
- grep.lineNumber
-
trueに設定すると、デフォルトで
-nオプションが有効になります。 - grep.column
-
trueに設定されている場合、デフォルトで
--columnオプションを有効にします。 - grep.patternType
-
デフォルトのマッチング動作を設定します。
basicまたはextendedまたはfixedまたはperlの値を使用すると、それぞれに応じて--basic-regexpまたは ` --extended-regexp` または--fixed-stringsまたは--perl-regexpオプションが有効になります。 値defaultはgrep.extendedRegexpオプションを使用してbasicとextendedのどちらかを選択します。 - grep.extendedRegexp
-
trueに設定されている場合、デフォルトで
--extended-regexpオプションを有効にします。grep.patternTypeオプションがdefault以外の値に設定されている場合、このオプションは無視されます。 - grep.threads
-
使用する grep ワーカー・スレッドの数。 設定しない場合(または 0 に設定した場合)、 Git は使用可能な論理コアの数と同じ数のスレッドを使用します。
- grep.fullName
-
trueに設定すると、デフォルトで
--full-nameオプションが有効になります。 - grep.fallbackToNoIndex
-
trueに設定すると、
gitgrepがgitリポジトリの外部で実行される場合は、gitgrep--no-indexにフォールバックします。 デフォルトは false です。
GIT
Part of the git(1) suite