git-rev-list - Linux


Overview

git-rev-list displays the commit history of a repository or a specified commit range. It provides a list of commits, each represented by its commit ID (SHA-1 hash). This command is useful for exploring the history of your project, finding specific commits, and generating input for other Git commands.

Syntax

git rev-list [<options>] [<rev-list-spec>]

Options/Flags

  • -n : Limit the output to the specified number of commits.
  • –[no-]decorate: Display commit summaries in a decorated or plain format. Default is true (decorated).
  • –[no-]simplify-by-decoration: Simplify decorated commits by ignoring submodules and untracked files. Default is true (simplify).
  • –max-count=: Limit the maximum number of commits to be shown.
  • –cherry-pick: Show only the commits that are not present in the current branch.
  • –remotes: Include commits from remote branches.
  • –all: Show all commits, not limited to the specified range.
  • –boundary: Treat the specified commit as a boundary and only show commits before or after it.
  • –until=: Display commits up to, but not including, the specified commit.
  • –since=: Display commits since, but not including, the specified commit.
  • –count: Display only the count of commits matching the specified criteria.
  • –first-parent: Follow only the first parent of each commit.

Examples

  • Display the last 10 commits in the history:

    git rev-list -n 10
    
  • Show a list of all commits with simplified summaries:

    git rev-list --no-decorate
    
  • Display commits that are not in the current branch:

    git rev-list --cherry-pick
    
  • Get the list of commits from the remote master branch:

    git rev-list remotes/origin/master
    

Common Issues

  • No output: Verify that the specified commit range is valid and exists in the repository.
  • Too many commits: Use the --max-count option to limit the output or specify a specific commit range.
  • Unexpected commit order: Remember that commits are listed in reverse chronological order. Use the --reverse option to change the order.

Integration

git-rev-list can be combined with other commands to perform more complex tasks. For example:

  • Generate a list of commits and pipe it to git show to display the full commit summaries:

    git rev-list | git show
    
  • Use git-rev-list as input for git cherry-pick to select the commits to cherry-pick:

    git cherry-pick -n $(git rev-list --cherry-pick)
    

Related Commands

  • git log: Display the commit history in a more user-friendly format.
  • git whatchanged: Show the changes between two commits.
  • git diff: Compare the contents of two commits.