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
を探し、かつ、NODE
とUnexpected
の両方を持つ行があるファイルだけを表示します。 -
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
オプションが有効になります。 値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に設定すると、
git grep
がgitリポジトリの外部で実行される場合は、git grep --no-index
にフォールバックします。 デフォルトはfalseです。
GIT
Part of the git(1) suite