]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-describe.txt
Merge branch 'maint'
[thirdparty/git.git] / Documentation / git-describe.txt
CommitLineData
c06818e2
JH
1git-describe(1)
2===============
3
4NAME
5----
7bd7f280 6git-describe - Show the most recent tag that is reachable from a commit
c06818e2
JH
7
8
9SYNOPSIS
10--------
b1889c36 11'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] <committish>...
9f67d2e8 12'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>]
c06818e2
JH
13
14DESCRIPTION
15-----------
16The command finds the most recent tag that is reachable from a
b7893cde
IH
17commit. If the tag points to the commit, then only the tag is
18shown. Otherwise, it suffixes the tag name with the number of
19additional commits on top of the tagged object and the
20abbreviated object name of the most recent commit.
c06818e2 21
7e425c4f
SP
22By default (without --all or --tags) `git describe` only shows
23annotated tags. For more information about creating annotated tags
24see the -a and -s options to linkgit:git-tag[1].
c06818e2
JH
25
26OPTIONS
27-------
f448e24e
AMS
28<committish>...::
29 Committish object names to describe.
c06818e2 30
9f67d2e8
JP
31--dirty[=<mark>]::
32 Describe the working tree.
33 It means describe HEAD and appends <mark> (`-dirty` by
34 default) if the working tree is dirty.
35
c06818e2
JH
36--all::
37 Instead of using only the annotated tags, use any ref
7e425c4f
SP
38 found in `.git/refs/`. This option enables matching
39 any known branch, remote branch, or lightweight tag.
c06818e2
JH
40
41--tags::
42 Instead of using only the annotated tags, use any tag
7e425c4f
SP
43 found in `.git/refs/tags`. This option enables matching
44 a lightweight (non-annotated) tag.
c06818e2 45
23615708
SP
46--contains::
47 Instead of finding the tag that predates the commit, find
48 the tag that comes after the commit, and thus contains it.
49 Automatically implies --tags.
50
c06818e2 51--abbrev=<n>::
b938f62a 52 Instead of using the default 7 hexadecimal digits as the
492cf3f7
GA
53 abbreviated object name, use <n> digits, or as many digits
54 as needed to form a unique object name. An <n> of 0
55 will suppress long format, only showing the closest tag.
c06818e2 56
8713ab30
SP
57--candidates=<n>::
58 Instead of considering only the 10 most recent tags as
59 candidates to describe the input committish consider
60 up to <n> candidates. Increasing <n> above 10 will take
61 slightly longer but may produce a more accurate result.
2c33f757
SP
62 An <n> of 0 will cause only exact matches to be output.
63
64--exact-match::
65 Only output exact matches (a tag directly references the
66 supplied commit). This is a synonym for --candidates=0.
8713ab30
SP
67
68--debug::
69 Verbosely display information about the searching strategy
70 being employed to standard error. The tag name will still
71 be printed to standard out.
c06818e2 72
518120e3
SB
73--long::
74 Always output the long format (the tag, the number of commits
75 and the abbreviated commit name) even when it matches a tag.
76 This is useful when you want to see parts of the commit object name
77 in "describe" output, even when the commit in question happens to be
78 a tagged version. Instead of just emitting the tag name, it will
492cf3f7
GA
79 describe such a commit as v1.2-0-gdeadbee (0th commit since tag v1.2
80 that points at object deadbee....).
518120e3 81
30ffa603
PH
82--match <pattern>::
83 Only consider tags matching the given pattern (can be used to avoid
84 leaking private tags made from the repository).
85
a3800f66
SB
86--always::
87 Show uniquely abbreviated commit object as fallback.
88
c06818e2
JH
89EXAMPLES
90--------
91
92With something like git.git current tree, I get:
93
b1889c36 94 [torvalds@g5 git]$ git describe parent
1891261e 95 v1.0.4-14-g2414721
c06818e2
JH
96
97i.e. the current head of my "parent" branch is based on v1.0.4,
323b9db8 98but since it has a few commits on top of that,
1891261e
JH
99describe has added the number of additional commits ("14") and
100an abbreviated object name for the commit itself ("2414721")
101at the end.
102
103The number of additional commits is the number
104of commits which would be displayed by "git log v1.0.4..parent".
105The hash suffix is "-g" + 7-char abbreviation for the tip commit
106of parent (which was `2414721b194453f058079d897d13c4e377f92dc6`).
c06818e2 107
ba020ef5 108Doing a 'git-describe' on a tag-name will just show the tag name:
c06818e2 109
b1889c36 110 [torvalds@g5 git]$ git describe v1.0.4
c06818e2
JH
111 v1.0.4
112
113With --all, the command can use branch heads as references, so
114the output shows the reference path as well:
115
116 [torvalds@g5 git]$ git describe --all --abbrev=4 v1.0.5^2
1891261e 117 tags/v1.0.0-21-g975b
c06818e2 118
492cf3f7 119 [torvalds@g5 git]$ git describe --all --abbrev=4 HEAD^
1891261e
JH
120 heads/lt/describe-7-g975b
121
122With --abbrev set to 0, the command can be used to find the
123closest tagname without any suffix:
124
125 [torvalds@g5 git]$ git describe --abbrev=0 v1.0.5^2
126 tags/v1.0.0
c06818e2 127
492cf3f7 128Note that the suffix you get if you type these commands today may be
0a565de4 129longer than what Linus saw above when he ran these commands, as your
492cf3f7
GA
130git repository may have new commits whose object names begin with
131975b that did not exist back then, and "-g975b" suffix alone may not
132be sufficient to disambiguate these commits.
133
134
8713ab30
SP
135SEARCH STRATEGY
136---------------
137
ba020ef5 138For each committish supplied, 'git-describe' will first look for
8713ab30
SP
139a tag which tags exactly that commit. Annotated tags will always
140be preferred over lightweight tags, and tags with newer dates will
141always be preferred over tags with older dates. If an exact match
142is found, its name will be output and searching will stop.
143
ba020ef5 144If an exact match was not found, 'git-describe' will walk back
8713ab30
SP
145through the commit history to locate an ancestor commit which
146has been tagged. The ancestor's tag will be output along with an
147abbreviation of the input committish's SHA1.
148
149If multiple tags were found during the walk then the tag which
150has the fewest commits different from the input committish will be
151selected and output. Here fewest commits different is defined as
483bc4f0 152the number of commits which would be shown by `git log tag..input`
8713ab30
SP
153will be the smallest number of commits possible.
154
c06818e2
JH
155
156Author
157------
158Written by Linus Torvalds <torvalds@osdl.org>, but somewhat
59eb68aa 159butchered by Junio C Hamano <gitster@pobox.com>. Later significantly
1891261e 160updated by Shawn Pearce <spearce@spearce.org>.
c06818e2
JH
161
162Documentation
163--------------
164Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
165
166GIT
167---
9e1f0a85 168Part of the linkgit:git[1] suite