git-rev-list(1)
===============

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


SYNOPSIS
--------
[verse]
'git-rev-list' [ \--max-count=number ]
	     [ \--max-age=timestamp ]
	     [ \--min-age=timestamp ]
	     [ \--sparse ]
	     [ \--no-merges ]
	     [ \--remove-empty ]
	     [ \--not ]
	     [ \--all ]
	     [ \--topo-order ]
	     [ \--parents ]
	     [ [\--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 '{caret}' cause listing to stop at
that point. Their parents are implied. "git-rev-list foo bar {caret}baz" thus
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 {caret}<commit1> <commit2>.

Another special notation is <commit1>...<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
------------

OPTIONS
-------
--pretty::
	Print the contents of the commit changesets in human-readable form.

--header::
	Print the contents of the commit in raw-format; each
	record is separated with a NUL character.

--parents::
	Print the parents of the commit.

--objects::
	Print the object IDs of any object referenced by the listed commits.
	'git-rev-list --objects foo ^bar' thus means "send me all object IDs
	which I need to download if I have the commit object 'bar', but
	not 'foo'".

--objects-edge::
	Similar to `--objects`, but also print the IDs of
	excluded commits prefixed with a `-` character.  This is
	used by `git-pack-objects` to build 'thin' pack, which
	records objects in deltified form based on objects
	contained in these excluded commits to reduce network
	traffic.

--unpacked::
	Only useful with `--objects`; print the object IDs that
	are not in packs.

--bisect::
	Limit output to the one commit object which is roughly halfway
	between the included and excluded commits. Thus, if 'git-rev-list
	--bisect foo {caret}bar {caret}baz' outputs 'midpoint', the output
	of 'git-rev-list foo {caret}midpoint' and 'git-rev-list midpoint
	{caret}bar {caret}baz' would be of roughly the same length.
	Finding the change
	which introduces a regression is thus reduced to a binary search:
	repeatedly generate and test new 'midpoint's until the commit chain
	is of length one.

--max-count::
	Limit the number of commits output.

--max-age=timestamp, --min-age=timestamp::
	Limit the commits output to specified time range.

--sparse::
	When optional paths are given, the command outputs only
	the commits that changes at least one of them, and also
	ignores merges that do not touch the given paths.  This
	flag makes the command output all eligible commits
	(still subject to count and age limitation), but apply
	merge simplification nevertheless.

--remove-empty::
	Stop when a given path disappears from the tree.

--no-merges::
	Do not print commits with more than one parent.

--not::
	Reverses the meaning of the '{caret}' prefix (or lack
	thereof) for all following revision specifiers, up to
	the next `--not`.

--all::
	Pretend as if all the refs in `$GIT_DIR/refs/` are
	listed on the command line as <commit>.

--topo-order::
	By default, the commits are shown in reverse
	chronological order.  This option makes them appear in
	topological order (i.e. descendant commits are shown
	before their parents).

--merge::
	After a failed merge, show refs that touch files having a
	conflict and don't exist on all heads to merge.

Author
------
Written by Linus Torvalds <torvalds@osdl.org>

Documentation
--------------
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite

