This is an old revision of the document!
Overview
How to use git grep to search only tracked files, or tracked and new files, etc.
SYNOPSIS
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]
[-l | --files-with-matches] [-L | --files-without-match]
[(-O | --open-files-in-pager) [<pager>]]
[-z | --null]
[-c | --count] [--all-match] [-q | --quiet]
[--max-depth <depth>]
[--color[=<when>] | --no-color]
[--break] [--heading] [-p | --show-function]
[-A <post-context>] [-B <pre-context>] [-C <context>]
[-W | --function-context]
[--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>...]
NOTE: If you don't specify a <pathspec> to search, it (apparently) defaults to the current working directory – this is not obvious from the man page.
Config options
grep.lineNumbergrep.patternTypegrep.extendedRegexpgrep.threadsgrep.fullNamegrep.fallbackToNoIndex
Popular options
--cached
Instead of searching tracked files in the working tree, search
blobs registered in the index file.
--no-index
Search files in the current directory that is not managed by Git.
--untracked
In addition to searching in the tracked files in the working
tree, search also in untracked files.
--no-exclude-standard
Also search in ignored files by not honoring the .gitignore
mechanism. Only useful with --untracked.
--exclude-standard
Do not pay attention to ignored files specified via the
.gitignore mechanism. Only useful when searching files in the
current directory with --no-index.
Examples
Search a subdirectory:
$ git grep -il torvalds -- scripts/ scripts/checkstack.pl scripts/get_maintainer.pl scripts/package/mkdebian $