Git Tips: Search code with git grep
Introduction
Use git grep to search code within the git repo.
It makes it very convenient and efficient to do code searches without leaving your terminal (or editor).
Setup Git Repo
Setting up a sample git repo to play with git grep.
git init someproject
cd someproject
echo -e "# Git Grep\n" > info.md
echo -e "Git grep is a powerful handy tool to search code within a git repo." >> info.md
git add info.md
git commit -m "Add info file"
Output after final command:
[main (root-commit) 2d587a0] Add info file
1 file changed, 3 insertions(+)
create mode 100644 info.md
This is good enough setup for us to play with git grep
.
Git Grep
Search the desired term
git grep <term>
Example:
git grep Grep
Output:
info.md:# Git Grep
Example:
git grep grep
Output:
info.md:Git grep is a powerful handy tool to search code within a git repo.
Enable line numbers in search result
Search with -n
flag.
Example:
git grep -n Grep
Output:
info.md:1:# Git Grep
Example:
git grep -n grep
Output:
info.md:3:Git grep is a powerful handy tool to search code within a git repo.
Before and after context
Use -A<num>
for after context, -B<num>
for before context, and -C<num>
for context lines before and after both.
Example:
git grep -n -A2 Grep
Output:
info.md:1:# Git Grep
info.md-2-
info.md-3-Git grep is a powerful handy tool to search code within a git repo.
Shorthand for the -C<num>
context lines is -<num>
.
Example:
git grep -2 Grep
Output:
info.md:# Git Grep
info.md-
info.md-Git grep is a powerful handy tool to search code within a git repo.
Matching file names only
Using flag -l
to only see the list of matching file names.
Example:
git grep -l Grep
Output:
info.md
Case-insensitive search
Use -i
to make your search case-insensitive.
Example:
git grep -i Grep
Output:
info.md:# Git Grep
info.md:Git grep is a powerful handy tool to search code within a git repo.
Search multiple terms at once
Use pattern search with flag -e
as -e<pattern>
.
Example:
git grep -e grep -e Grep
Output:
info.md:# Git Grep
info.md:Git grep is a powerful handy tool to search code within a git repo.
Search can be limited to a file or directory
Example:
git grep Grep info.md
Output:
info.md:# Git Grep
Conclusion
There are many more features packed into git grep like inverted search, regex search, recursive search within sub-directories, number of matches in the file, etc.