SYNOPSIS

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 | --no-index | --untracked] | <tree>…]
           [--] [<pathspec>…]

DESCRIPTION

作業ツリーの追跡ファイル(tracked files)内または、インデックスファイルに登録されているブロブまたは、指定のツリーオブジェクトのブロブ、で指定のパターンを探します。 パターンは、改行文字(newline characters)で区切られた1つ以上の検索式のリストです。 検索式としての空文字列は、すべての行にマッチします。

OPTIONS

--cached

作業ツリーで追跡中のファイル(tracked files)を検索する代わりに、インデックスファイルに登録されているブロブを検索します。

--no-index

Git管理管理下に無い、現在のディレクトリ内のファイルを検索します。

--untracked

作業ツリーで、追跡中のファイル(tracked files)を検索するだけでなく、追跡されていないファイル(untracked files)も検索します。

--no-exclude-standard

また、 .gitignore メカニズムを尊重せずに、無視されたファイル(ignored files)を検索します。 --untracked でのみ役立ちます。

--exclude-standard

.gitignore メカニズムを介して指定されている、無視されたファイル(ignored files)に注意を払わないでください。 --no-index を使用して現在のディレクトリ内のファイルを検索する場合にのみ役立ちます。

--recurse-submodules

リポジトリ内で、アクティブかつチェックアウトされている各サブモジュールを再帰的に検索します。 <tree> オプションと組み合わせて使用すると、すべてのサブモジュール出力のプレフィックスは、親プロジェクトの <tree> オブジェクトの名前になります。 --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)ファイル名のみを表示します。 git diff との互換性を高めるために、--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

マッチがある行のマッチする(空でない)部分のみを出力し、行内で複数マッチした場合、そのような各部分を別々の行に出力します。(訳注: 例えば git grep -n --break --column --only-matching hoge)

-c
--count

マッチした行を全て表示する代わりに、ファイル毎にマッチした行の行数を表示します。

--color[=<when>]

色付きのマッチ表示します。 値は always (デフォルト) または never または auto である必要があります。

--no-color

構成ファイルがデフォルトでカラー出力を提供している場合でも、マッチのハイライト表示をオフにします。 --color=never と同じです。

--break

一致の出力で、異なるファイルの間に(区切りとして)1行の空行を出力します。(訳注:例 git grep --break --heading hoge)

--heading

マッチしたのを表示する各行の初めファイル名を表示するのではなく、表示するファイル毎に、その直前にファイル名だけの行を出力します。 (訳注:例 git grep --break --heading hoge)

-p
--show-function

マッチした行が関数名そのものでない限り、 マッチした関数名を含む先行の行を表示します。 名前は、 git diff がパッチハンクヘッダーを処理するのと同じ方法で決定されます (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

関数名を含む前の行から次の関数名の前の行までの周囲のテキストを表示し、マッチした関数全体を効果的に示します。 関数名は、 git diff がパッチハンクヘッダーを処理するのと同じ方法で決定されます(gitattributes(5) の「Defining a custom hunk-header」参照)。

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

ファイルごとのマッチ数を制限します。 -v または --invert-match オプションを使用すると、指定された数の不一致の後に検索(search)が停止(stop)します。 -1 の値は無制限の結果を返します (デフォルト)。 0 の値は、ゼロ以外のステータスですぐに終了します。

--threads <num>

使用するgrepワーカースレッドの数。 詳細については、「CONFIGURATION」の「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

git grep 'time_t' -- '*.[ch]'

作業ディレクトリとそのサブディレクトリで、追跡中(tracked)のすべての .c ファイルと .h ファイルで time_t を探します。

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 を探し、かつ、 NODEUnexpected の両方を持つ行があるファイルだけを表示します。

git grep solution -- :^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 オプションが有効になります。 値 defaultgrep.extendedRegexp オプションを使用して basicextended のどちらかを選択します。

grep.extendedRegexp

trueに設定されている場合、デフォルトで --extended-regexp オプションを有効にします。 grep.patternType オプションが default 以外の値に設定されている場合、このオプションは無視されます。

grep.threads

使用する grep ワーカー・スレッドの数。 設定しない場合(または 0 に設定した場合)、 Git は使用可能な論理コアの数と同じ数のスレッドを使用します。

grep.fullName

trueに設定すると、デフォルトで --full-name オプションが有効になります。

grep.fallbackToNoIndex

trueに設定すると、 git grep がgitリポジトリの外部で実行される場合は、 git grep --no-index にフォールバックします。 デフォルトはfalseです。

GIT

Part of the git(1) suite