In the last lesson, we learned how to format the git log output; in this lesson we will learn how to filter down to a specific set of commits. By default, git log
shows every commit in a repo. We will walk through using a bunch of options to filter our git log commits to a more meaningful set (-n
, --after
, --before
, --author
, --grep
, -S
, -G
, --no-merges
, {ref}..{ref}
, {files}
). We will also show how all of the formatting and filtering options can be composed together to query exactly what you are looking for in your commit history.
Show lasat N commit:
git log -3 // show last three commit
Show commits from a center time:
git log --after="yesterday" // Show the commit between yesterday and today
git log --after="10 minutes ago" git log --after="2 weeks ago" git log --after="3/15/16" // Match 15, 2016
Combine with --before:
git log --after="3/15/16" --before="yesterday"
The same as:
git log --since="3/15/16" --until="yesterday"
Filter by author:
git log --author="Tavor"
Filter by the commit message:
git log --grep="copyright"
Filter by the code using string:
git log -S"Math.random" -p // get all the commit which has Math.random changes in the code, and use -p option to see the code
Filter by the code using Regex:
git log -p -GMath\|random // Using ‘G‘ without quotes and follow with regex math or random
Ingore the case:
git log -i --author="Jane" // search both for "Jane" and "jane" git log --author="Jane" // search only for "Jane"
Filter out merges commit:
git log --no-merges
See the commits between two branch:
git log master..cool-feature
Search by files:
git log LIENCE.md README.md // search for lience and readme files
Example:
git log -3 README.md -p -i --author="Tavor" // Want to see last 3 change on README.md file by author Tavor, ignor the case, and show the code
git log -S"Math" --after="2 months ago" --oneline --stat