git-describe(1)
===============

NAME
----
git-describe - Show the most recent tag that is reachable from a commit


SYNOPSIS
--------
'git-describe' [--all] [--tags] [--contains] [--abbrev=<n>] <committish>...

DESCRIPTION
-----------
The command finds the most recent tag that is reachable from a
commit, and if the commit itself is pointed at by the tag, shows
the tag.  Otherwise, it suffixes the tag name with the number of
additional commits and the abbreviated object name of the commit.


OPTIONS
-------
<committish>::
	The object name of the committish.

--all::
	Instead of using only the annotated tags, use any ref
	found in `.git/refs/`.

--tags::
	Instead of using only the annotated tags, use any tag
	found in `.git/refs/tags`.

--contains::
	Instead of finding the tag that predates the commit, find
	the tag that comes after the commit, and thus contains it.
	Automatically implies --tags.

--abbrev=<n>::
	Instead of using the default 8 hexadecimal digits as the
	abbreviated object name, use <n> digits.

--candidates=<n>::
	Instead of considering only the 10 most recent tags as
	candidates to describe the input committish consider
	up to <n> candidates.  Increasing <n> above 10 will take
	slightly longer but may produce a more accurate result.

--debug::
	Verbosely display information about the searching strategy
	being employed to standard error.  The tag name will still
	be printed to standard out.

EXAMPLES
--------

With something like git.git current tree, I get:

	[torvalds@g5 git]$ git-describe parent
	v1.0.4-14-g2414721

i.e. the current head of my "parent" branch is based on v1.0.4,
but since it has a handful commits on top of that,
describe has added the number of additional commits ("14") and
an abbreviated object name for the commit itself ("2414721")
at the end.

The number of additional commits is the number
of commits which would be displayed by "git log v1.0.4..parent".
The hash suffix is "-g" + 7-char abbreviation for the tip commit
of parent (which was `2414721b194453f058079d897d13c4e377f92dc6`).

Doing a "git-describe" on a tag-name will just show the tag name:

	[torvalds@g5 git]$ git-describe v1.0.4
	v1.0.4

With --all, the command can use branch heads as references, so
the output shows the reference path as well:

	[torvalds@g5 git]$ git describe --all --abbrev=4 v1.0.5^2
	tags/v1.0.0-21-g975b

	[torvalds@g5 git]$ git describe --all HEAD^
	heads/lt/describe-7-g975b

With --abbrev set to 0, the command can be used to find the
closest tagname without any suffix:

	[torvalds@g5 git]$ git describe --abbrev=0 v1.0.5^2
	tags/v1.0.0

SEARCH STRATEGY
---------------

For each committish supplied "git describe" will first look for
a tag which tags exactly that commit.  Annotated tags will always
be preferred over lightweight tags, and tags with newer dates will
always be preferred over tags with older dates.  If an exact match
is found, its name will be output and searching will stop.

If an exact match was not found "git describe" will walk back
through the commit history to locate an ancestor commit which
has been tagged.  The ancestor's tag will be output along with an
abbreviation of the input committish's SHA1.

If multiple tags were found during the walk then the tag which
has the fewest commits different from the input committish will be
selected and output.  Here fewest commits different is defined as
the number of commits which would be shown by "git log tag..input"
will be the smallest number of commits possible.


Author
------
Written by Linus Torvalds <torvalds@osdl.org>, but somewhat
butchered by Junio C Hamano <junkio@cox.net>.  Later significantly
updated by Shawn Pearce <spearce@spearce.org>.

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

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