NAME 

git-rev-list - Lists commit objects in reverse chronological order

SYNOPSIS 

git-rev-list [ --max-count=number ]
             [ --max-age=timestamp ]
             [ --min-age=timestamp ]
             [ --sparse ]
             [ --no-merges ]
             [ --remove-empty ]
             [ --not ]
             [ --all ]
             [ --stdin ]
             [ --topo-order ]
             [ --parents ]
             [ --(author|committer|grep)=<pattern> ]
             [ [--objects | --objects-edge] [ --unpacked ] ]
             [ --pretty | --header ]
             [ --bisect ]
             [ --merge ]
             <commit> [ -- <paths> ]

DESCRIPTION 

Lists commit objects in reverse chronological order starting at the given commit(s), taking ancestry relationship into account. This is useful to produce human-readable log output.

Commits which are stated with a preceding ^ cause listing to stop at that point. Their parents are implied. Thus the following command:

        $ git-rev-list foo bar ^baz
means "list all the commits which are included in foo and bar, but not in baz".

A special notation "<commit1>..<commit2>" can be used as a short-hand for "^<commit1> <commit2>". For example, either of the following may be used interchangeably:

        $ git-rev-list origin..HEAD
        $ git-rev-list HEAD ^origin
Another special notation is "<commit1>\fI<commit2>" which is useful for merges. The resulting set of commits is the symmetric difference between the two operands. The following two commands are equivalent:
        $ git-rev-list A B --not $(git-merge-base --all A B)
        $ git-rev-list A...B
git-rev-list(1) is a very essential git program, since it provides the ability to build and traverse commit ancestry graphs. For this reason, it has a lot of different options that enables it to be used by commands as different as git-bisect(1) and git-repack(1).