セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.45.1 → 2.49.0 変更なし
-
2.45.0
2024-04-29
- 2.43.1 → 2.44.3 変更なし
-
2.43.0
2023-11-20
- 2.38.1 → 2.42.4 変更なし
-
2.38.0
2022-10-02
- 2.32.1 → 2.37.7 変更なし
-
2.32.0
2021-06-06
- 2.30.1 → 2.31.8 変更なし
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 変更なし
-
2.29.0
2020-10-19
- 2.27.1 → 2.28.1 変更なし
-
2.27.0
2020-06-01
- 2.26.1 → 2.26.3 変更なし
-
2.26.0
2020-03-22
- 2.25.2 → 2.25.5 変更なし
-
2.25.1
2020-02-17
- 2.24.1 → 2.25.0 変更なし
-
2.24.0
2019-11-04
- 2.22.1 → 2.23.4 変更なし
-
2.22.0
2019-06-07
- 2.20.1 → 2.21.4 変更なし
-
2.20.0
2018-12-09
- 2.19.1 → 2.19.6 変更なし
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 変更なし
-
2.18.0
2018-06-21
- 2.16.6 → 2.17.6 変更なし
- 2.15.4 変更なし
-
2.14.6
2019-12-06
- 2.13.7 変更なし
-
2.12.5
2017-09-22
- 2.10.5 → 2.11.4 変更なし
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.7.6 変更なし
-
2.6.7
2017-05-05
- 2.2.3 → 2.5.6 変更なし
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
概要
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>…]
説明
作業ツリー内の追跡ファイル、インデックスファイルに登録されたブロブ、または指定されたツリーオブジェクト内のブロブで、指定されたパターンを探します。パターンは、改行文字で区切られた1つ以上の検索式のリストです。検索式として空の文字列は、すべての行に一致します。
オプション
- --cached
-
作業ツリー内の追跡ファイルを検索する代わりに、インデックスファイルに登録されたブロブを検索します。
- --untracked
-
作業ツリー内の追跡ファイルに加えて、未追跡ファイルも検索します。
- --no-index
-
現在のディレクトリ内の、Gitによって管理されていないファイル、または現在のディレクトリがGitによって管理されていることを無視してファイルを検索します。これは、通常の
grep(1)
ユーティリティを-r
オプションを指定して実行するのとかなり似ていますが、パスを制限するためにパス指定パターンを使用するなどの追加の利点があります。詳細については、gitglossary[7]のpathspecエントリを参照してください。このオプションは、
--cached
または--untracked
と同時に使用することはできません。また、以下のCONFIGURATIONの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」で、ユーザーが1つのパターンのみを指定した場合、最初のファイルは自動的に最初のマッチに配置されます。
pager
引数はオプションです。指定された場合、スペースなしでオプションに付着させる必要があります。pager
が指定されていない場合、デフォルトのページャーが使用されます(git-config[1]のcore.pager
を参照)。 - -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
がパッチハンクヘッダーを決定するのと同じ方法で決定されます(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
がパッチハンクヘッダーを決定するのと同じ方法で決定されます(gitattributes[5]のカスタムハンクヘッダーの定義を参照)。 - -m <num>
- --max-count <num>
-
ファイルごとのマッチの数を制限します。
-v
または--invert-match
オプションを使用する場合、検索は指定された数の非マッチ後に停止します。値が-1の場合は無制限の結果を返します(デフォルト)。値が0の場合は、非ゼロステータスで即座に終了します。 - --threads <num>
-
使用する
grep
ワーカーのスレッド数。詳細については、THREADSに関する注意事項と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を含むパターンをサポートするようになるかもしれませんが、それまでは、該当するパターンタイプがそれらをサポートしない場合、終了します。
- -e
-
次のパラメータはパターンです。このオプションは、
-
で始まるパターンに使用する必要があり、ユーザー入力をgrepに渡すスクリプトで使用すべきです。複数のパターンはorで結合されます。 - --and
- --or
- --not
- ( … )
-
ブール式を使用して複数のパターンを結合する方法を指定します。
--or
がデフォルトの演算子です。--and
は--or
よりも高い優先順位を持ちます。すべてのパターンに対して-e
を使用する必要があります。 - --all-match
-
--or
と組み合わせて複数のパターン式を与える場合、このフラグは、それらすべてに一致する行を持つファイルにマッチを限定するために指定されます。 - -q
- --quiet
-
一致した行を出力しません。代わりに、一致があった場合はステータス0で、ない場合は非ゼロステータスで終了します。
- <tree>…
-
作業ツリー内の追跡ファイルを検索する代わりに、指定されたツリー内のブロブを検索します。
- --
-
オプションの終わりを示します。残りのパラメータは<pathspec>リミッターです。
- <pathspec>…
-
指定された場合、検索を少なくとも1つのパターンに一致するパスに限定します。先行するパスの一致とglob(7)パターンがサポートされています。
<pathspec>構文の詳細については、gitglossary[7]のpathspecエントリを参照してください。
例
-
git grep 'time_t' -- '*.[ch]'
-
作業ディレクトリとそのサブディレクトリ内のすべての追跡されている.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
のいずれかを持つ行を探し、両方に一致する行を持つファイルに限定します。 -
git grep solution -- :^Documentation
-
solution
を探しますが、Documentation
内のファイルは除外します。
スレッドに関する注意事項
--threads
オプション(およびgrep.threads
設定)は、--open-files-in-pager
が使用される場合、単一スレッド実行を強制するため無視されます。
オブジェクトストアをgrepする場合(--cached
を使用するか、ツリーオブジェクトを指定する場合)、--textconv
が与えられ、テキスト変換が多すぎる場合、複数スレッドで実行すると単一スレッドよりもパフォーマンスが低下する可能性があります。したがって、このケースで低パフォーマンスが発生する場合は、--threads=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は、basicとextendedのどちらかを選択するためにgrep.extendedRegexp
オプションを使用します。 - 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
git[1]スイートの一部