Learn Docker With My Newest Course

Dive into Docker takes you from "What is Docker?" to confidently applying Docker to your own projects. It's packed with best practices and examples. Start Learning Docker →

Search All of Your Git History for Code and Commits with 2 Commands

search-all-of-your-git-history-for-code-and-commits-with-2-commands.jpg

Search your git repos for any string / regex, even across branches. This is handy to recall something from days, weeks or years ago.

Quick Jump:

You can use the git grep (or rg, etc.) command to search through code in the current git working tree / directory but what if you want to search for something in an older commit?

If you’re searching for code within commits you can use the git “pickaxe” flag, here’s a few examples. All of these commands will identify specific commits that contain your search term at least once and you can choose to see the matches too:

# Show commits that contains the code, then you can: git show <commit_sha>
git log -S "whatever you want to search for"

# An even easier way to show matches right there on the spot
git log -S "your search term" -p

# Same as above, except applied to all branches instead of the checked out branch
git log -S "something" -p --all

# Limit your search to only specific files in a specific directory
git log -S "something specific" -p -- **/models/user*.py

# Search for a regex instead of a string (note the -G instead of -S)
git log -G '^alias \w+=".*"$' -p

Now let’s say you don’t remember the code but instead you remember reading or committing a specific message. Git lets you search commit messages too:

# Show the commit message that contains your search term, you can supply either
# a string or regular expression with the same flag
git log --grep "your search term"

# Same as above, except applied to all branches instead of the checked out branch
git log --grep "something else" --all

# Demo Video

Timestamps

  • 0:52 – Searching for a string in code that exists in any commit
  • 2:09 – Quality of life improvement for searching with the patch flag
  • 2:57 – Applying this to all branches with the all flag
  • 3:50 – Filter the matches by a specific directory or file type
  • 5:58 – Doing a regex search in code in any commit
  • 7:37 – Searching through git commit messages with strings or a regex

Reference Links

I use these commands a few times a month, how about you? Let me know below.

Never Miss a Tip, Trick or Tutorial

Like you, I'm super protective of my inbox, so don't worry about getting spammed. You can expect a few emails per year (at most), and you can 1-click unsubscribe at any time. See what else you'll get too.



Comments