SYNOPSIS

git grep [--cached] [-a | --text] [-I] [-i | --ignore-case] [-w | --word-regexp] [-v | --invert-match] [-h|-H] [--full-name] [-E | --extended-regexp] [-G | --basic-regexp] [-F | --fixed-strings] [-n] [-l | --files-with-matches] [-L | --files-without-match] [-z | --null] [-c | --count] [--all-match] [-q | --quiet] [--max-depth <depth>] [--color | --no-color] [-A <post-context>] [-B <pre-context>] [-C <context>] [-f <file>] [-e] <pattern> [--and|--or|--not|(|)|-e <pattern>…] [<tree>…] [--] [<pathspec>…]

DESCRIPTION

ワークツリーの中の追跡されているファイル群、インデックスファイルに登録されたデータ、 もしくは与えられたツリーオブジェクトのデータの中から、指定されたパターンを検索します。

OPTIONS

--cached

ワーキングツリー内のファイルを探す代わりに、 インデックスファイルに登録されている塊を調べます。

-a
--text

バイナリファイルをテキストファイルのように扱います。

-i
--ignore-case

パターンとファイルの大文字小文字の違いを無視します。

-I

バイナリファイルはパターンにマッチさせません。

--max-depth <depth>

コマンドラインから与えられたそれぞれの<pathspec>における、下るディレクトリの最大<深さ>を表します。 負の値を与えられた場合、制限なしを意味します。

-w
--word-regexp

単語境界(行頭か単語に含まれない文字で始まり、行末か単語に含まれない文字で終わる)のみにマッチします。

-v
--invert-match

マッチしなかった行が出力されます(訳注:結果が反転するということです)

-h
-H

通常、このコマンドはマッチした内容と一緒にファイル名を表示しますが、 -h`オプションはその出力を抑制します。 -H`はコマンドの前方で与えられた`-h`オプションを上書きすることが出来る以外は、 完全性のために存在しています。

--full-name

プロジェクトのサブディレクトリからコマンドを実行した場合、通常は現在位置からの 相対パスで出力されますが、このオプションは強制的にプロジェクトの トップディレクトリからの相対パスで出力します。

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

パターンに使用する正規表現の種類を選択します(POSIX extended もしくは POSIX basic) デフォルトはPOSIX basicです。

-F
--fixed-strings

パターンに固定文字列を使用します(パターンを正規表現として解釈しません)

-n

マッチした行の先頭に行番号を付けます。

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

マッチした行を表示する代わりに、マッチした(もしくはマッチしなかった)ファイル名を表示します。 'git diff'とのより良い互換性のため、 --files-with-matches と同義の --name-only があります。

-z
--null

ファイル名に続いて出力される文字を、\0(NULL)に変更して出力します。

-c
--count

マッチした行の内容を表示する代わりに、マッチした行数を表示します。

--color

マッチ部分に色を付けて表示します。

--no-color

設定ファイルのデフォルトが色付きの出力になっている時でも、マッチ部分の色づけを無効にします。

-[ABC] <context>

マッチ箇所前後の文脈を指定行分表示し、文脈の区切りに — を置きます。 オプションは後ろの文脈のみ(A — after)、前の文脈のみ(B — before)、もしくは前後の文脈(C — context) です。

-<num>

-C<num> のショートカットです。

-p

もしマッチした行が関数名では無い場合、その前の関数名を含んだ行を表示します。 名前の決定は、git diff'と同じく hunk-header を使って決定されます。 (参考 'Defining a custom hunk-header in gitattributes(5))

-f <file>

<file>から、1行につき一つずつパターンを読み込みます.

-e

次のパラメータがパターンであることを明示的に表します。 このオプションはパターンが'-'から始まる場合は必須ですし、 スクリプトからユーザー入力をgrepに渡すような場合も推奨されます。 複数のパターン(訳注: -eが複数個ある場合)は'or'で結合されます。

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

複数のパターンがどのブール式で結合されるかを明示します。 --or`はデフォルトオペレーションです、--and` は --or よりも 優先が高いです。全てのパターンは`-e`を使う必要があります。

--all-match

複数のパターンが --or で結合されて与えられた際、 このフラグは、全てのパターンにマッチしたファイルのみに制限します。

-q
--quiet

マッチした行を表示しません。代わりに、終了コードをマッチがあった時は0、 無かった時は非0で返します。

<tree>…

指定されたツリーの中を検索します。

--

オプションの終端を表します。 それ以降のパラメータは、<pathspec>リミッターです。

<pathspec>…

与えられた場合は、少なくとも一つのパターンにマッチしたパスのみに探索が制限されます。 パスの前方部分を渡すか、glob(7)記法の両方がサポートされています。

Example

git grep time_t*.[ch]

現在ディレクトリと、そのサブディレクトリの中にある、 全ての.c、.hファイルの中から`time_t`を探します。

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

#define と、 MAX_PATHPATH_MAX のどちらかを含んでいる行を探します。

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

NODEUnexpected の両方のマッチを含んだファイルの、マッチした行を探します。

Author

オリジナル版は Linus Torvalds <torvalds@osdl.org> によって記述され、 後に Junio C Hamano によって改造されました。

Documentation

ドキュメントは、Junio C Hamano と git-list <git@vger.kernel.org> によって記述されました。

GIT

このコマンドは git(1) スイートの一部です。