How to Search a Git Repository by Commit Message?

Better Stack Team
Updated on August 12, 2024

To search a Git repository by commit message, you can use the git log command with various options. This command allows you to filter commits based on their messages, making it easy to find specific changes or history.

1. Search by Commit Message Using git log

You can use the --grep option with git log to search commit messages for a specific pattern or keyword.

 
git log --grep="search-term"
  • search-term: Replace this with the term or phrase you want to search for in commit messages.

Example:

 
git log --grep="fix bug"

This command searches for commits whose messages contain "fix bug".

To perform a case-insensitive search, use the --grep option with --regexp-ignore-case:

 
git log --grep="search-term" --regexp-ignore-case

Example:

 
git log --grep="fix bug" --regexp-ignore-case

This will search for "fix bug" in commit messages, ignoring case.

2. Search Commit Messages with More Context

If you want to see more details about the commits, such as the commit hash, author, date, and full commit message, you can use additional git log formatting options.

Show Commit Details

 
git log --grep="search-term" --pretty=format:"%h %s" --oneline
  • %h: Commit hash.
  • %s: Commit message subject.

Example:

 
git log --grep="fix bug" --pretty=format:"%h %s" --oneline

This command lists commits that match the search term with a short hash and commit message.

Show Full Commit Details

To include more details such as the author and date:

 
git log --grep="search-term" --pretty=format:"%h %an %ad %s" --date=short
  • %an: Author name.
  • %ad: Author date.
  • -date=short: Formats the date in a shorter form.

Example:

 
git log --grep="fix bug" --pretty=format:"%h %an %ad %s" --date=short

3. Search Across Multiple Repositories

If you need to search across multiple repositories or directories, you might need to script the search or use tools that aggregate Git repositories.

For more complex searches, you can combine git log with other commands such as grep:

Search Through Commit Messages with grep

 
git log --oneline | grep "search-term"

Example:

 
git log --oneline | grep "fix bug"

This command lists all commits with their hashes and messages, then filters the results using grep to match the search term.

Summary

  • Basic Commit Message Search:

     
    git log --grep="search-term"
    
  • Case Insensitive Search:

     
    git log --grep="search-term" --regexp-ignore-case
    
  • Detailed Commit Info:

     
    git log --grep="search-term" --pretty=format:"%h %s" --oneline
    
  • Full Commit Details:

     
    git log --grep="search-term" --pretty=format:"%h %an %ad %s" --date=short
    
  • Search with grep:

     
    git log --oneline | grep "search-term"
    

Using these commands, you can effectively search through the commit history of a Git repository based on commit messages, helping you locate specific changes or understand the history of your project.

Got an article suggestion? Let us know
Explore more
Git
Licensed under CC-BY-NC-SA

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Make your mark

Join the writer's program

Are you a developer and love writing and sharing your knowledge with the world? Join our guest writing program and get paid for writing amazing technical guides. We'll get them to the right readers that will appreciate them.

Write for us
Writer of the month
Marin Bezhanov
Marin is a software engineer and architect with a broad range of experience working...
Build on top of Better Stack

Write a script, app or project on top of Better Stack and share it with the world. Make a public repository and share it with us at our email.

community@betterstack.com

or submit a pull request and help us build better products for everyone.

See the full list of amazing projects on github