I have a piece of code in another than my current branch in my git repo, and I am not sure which commit and which branch. How can I search in all files that I committed until now for a specific string (and afterwards show the surrounding of that line of code)?
Asked
Active
Viewed 3.2k times
4 Answers
47
Use git grep
to locate the commit:
git grep "string" $(git rev-list --all)
The git rev-list --all
makes it search the entire history of the project.
That will give an output like this:
<commit>:<path>:<matched line>
Then you can use git branch --contains
to find out which branch the commit is on:
git branch --contains <commit>

John Szakmeister
- 44,691
- 9
- 89
- 79
-
Can I specify to search in only one file/path? (E.g. I am searching for a specific fixture and only want to search in this path) – Yo Ludke Dec 14 '12 at 12:58
-
1
-
14this doesn't work for big histories :( `git grep 'abc' echo $(git rev-list --all)` `zsh: argument list too long: git` – tback Jan 21 '14 at 15:35
-
3If you get `Argument list too long`, you can use `git rev-list --all | xargs git grep 'abc'`: https://stackoverflow.com/a/49243541/9636 – Heath Borders Mar 12 '18 at 20:02
10
If the git grep "string"
variation above is giving you "list too long" errors, you can use git log -S
instead. The -S option searches the contents of the files that were committed:
git log -S "string" # look for string in every file of every commit
git log -S "string" -- path/to/file # only look at the history of the named file
(More in the "Pro Git" book under "searching".)
4
If jszakmeister's answer gives you an Argument list too long
response:
$ git grep "string" $(git rev-list --all)
-bash: /usr/local/bin/git: Argument list too long
You can pipe it into xargs
instead:
$ git rev-list --all | xargs git grep "string"

Heath Borders
- 30,998
- 16
- 147
- 256
0
change the branch with git branch "branch-name"
and then do git grep "specific string"
in your repository root. if you don't have too many branches this should get you there quick enough.

Alexander Oh
- 24,223
- 14
- 73
- 76