This is an old revision of the document!


How to search through commit history using either of:

  • git log
  • git grep

Examples use the Git repository for the “Pro Git” book found here.

The git log command supports looking for commits by the content of their commit messages, or even the content of the diff they introduced. All examples here can be enhanced with the regular git log options.

$ git log --author="Robert P. J. Day"
$ git log --author="Robert P\. J\. Day"
$ git log --author="P\. J\."
$ git log --author="Robert P. J. Day" --oneline
$ git log -i --author="robert p. j. day"
--since=<date>, --after=<date>
    Show commits more recent than a specific date.

--until=<date>, --before=<date>
    Show commits older than a specific date.

So:

$ git log --since="Feb 1, 2019"
$ git log --author="Ben Straub" --since="Jan 1, 2019" --until="Feb 1, 2019"
--grep=<pattern>
    Limit the commits output to ones with log message that
    matches the specified pattern (regular expression). With
    more than one --grep=<pattern>, commits whose message
    matches any of the given patterns are chosen (but see
    --all-match).

...

--all-match
    Limit the commits output to ones that match all given
    --grep, instead of ones that match at least one.

--invert-grep
    Limit the commits output to ones with log message that do
    not match the pattern specified with --grep=<pattern>.

Examples:

$ git log --grep="Tagging" --oneline | wc -l
75
$ git log --grep="tagging" --oneline | wc -l
75
$ git log -i --grep="tagging" | wc -l
109
$
$ git log -i --grep="tagging" --grep="rewording" --oneline | wc -l
645
$ git log -i --grep="tagging" --grep="rewording" --all-match --oneline | wc -l
17
  • git_searching.1550757327.txt.gz
  • Last modified: 2019/02/21 13:55
  • by rpjday