]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-describe.txt
git-describe: --long shows the object name even for a tagged commit
[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--------
23615708 11'git-describe' [--all] [--tags] [--contains] [--abbrev=<n>] <committish>...
c06818e2
JH
12
13DESCRIPTION
14-----------
15The command finds the most recent tag that is reachable from a
16commit, and if the commit itself is pointed at by the tag, shows
1891261e
JH
17the tag. Otherwise, it suffixes the tag name with the number of
18additional commits and the abbreviated object name of the commit.
c06818e2
JH
19
20
21OPTIONS
22-------
23<committish>::
37425065 24 The object name of the committish.
c06818e2
JH
25
26--all::
27 Instead of using only the annotated tags, use any ref
28 found in `.git/refs/`.
29
30--tags::
31 Instead of using only the annotated tags, use any tag
32 found in `.git/refs/tags`.
33
23615708
SP
34--contains::
35 Instead of finding the tag that predates the commit, find
36 the tag that comes after the commit, and thus contains it.
37 Automatically implies --tags.
38
c06818e2
JH
39--abbrev=<n>::
40 Instead of using the default 8 hexadecimal digits as the
41 abbreviated object name, use <n> digits.
42
8713ab30
SP
43--candidates=<n>::
44 Instead of considering only the 10 most recent tags as
45 candidates to describe the input committish consider
46 up to <n> candidates. Increasing <n> above 10 will take
47 slightly longer but may produce a more accurate result.
48
49--debug::
50 Verbosely display information about the searching strategy
51 being employed to standard error. The tag name will still
52 be printed to standard out.
c06818e2 53
518120e3
SB
54--long::
55 Always output the long format (the tag, the number of commits
56 and the abbreviated commit name) even when it matches a tag.
57 This is useful when you want to see parts of the commit object name
58 in "describe" output, even when the commit in question happens to be
59 a tagged version. Instead of just emitting the tag name, it will
60 describe such a commit as v1.2-0-deadbeef (0th commit since tag v1.2
61 that points at object deadbeef....).
62
30ffa603
PH
63--match <pattern>::
64 Only consider tags matching the given pattern (can be used to avoid
65 leaking private tags made from the repository).
66
c06818e2
JH
67EXAMPLES
68--------
69
70With something like git.git current tree, I get:
71
72 [torvalds@g5 git]$ git-describe parent
1891261e 73 v1.0.4-14-g2414721
c06818e2
JH
74
75i.e. the current head of my "parent" branch is based on v1.0.4,
1891261e
JH
76but since it has a handful commits on top of that,
77describe has added the number of additional commits ("14") and
78an abbreviated object name for the commit itself ("2414721")
79at the end.
80
81The number of additional commits is the number
82of commits which would be displayed by "git log v1.0.4..parent".
83The hash suffix is "-g" + 7-char abbreviation for the tip commit
84of parent (which was `2414721b194453f058079d897d13c4e377f92dc6`).
c06818e2
JH
85
86Doing a "git-describe" on a tag-name will just show the tag name:
87
88 [torvalds@g5 git]$ git-describe v1.0.4
89 v1.0.4
90
91With --all, the command can use branch heads as references, so
92the output shows the reference path as well:
93
94 [torvalds@g5 git]$ git describe --all --abbrev=4 v1.0.5^2
1891261e 95 tags/v1.0.0-21-g975b
c06818e2
JH
96
97 [torvalds@g5 git]$ git describe --all HEAD^
1891261e
JH
98 heads/lt/describe-7-g975b
99
100With --abbrev set to 0, the command can be used to find the
101closest tagname without any suffix:
102
103 [torvalds@g5 git]$ git describe --abbrev=0 v1.0.5^2
104 tags/v1.0.0
c06818e2 105
8713ab30
SP
106SEARCH STRATEGY
107---------------
108
109For each committish supplied "git describe" will first look for
110a tag which tags exactly that commit. Annotated tags will always
111be preferred over lightweight tags, and tags with newer dates will
112always be preferred over tags with older dates. If an exact match
113is found, its name will be output and searching will stop.
114
115If an exact match was not found "git describe" will walk back
116through the commit history to locate an ancestor commit which
117has been tagged. The ancestor's tag will be output along with an
118abbreviation of the input committish's SHA1.
119
120If multiple tags were found during the walk then the tag which
121has the fewest commits different from the input committish will be
122selected and output. Here fewest commits different is defined as
123the number of commits which would be shown by "git log tag..input"
124will be the smallest number of commits possible.
125
c06818e2
JH
126
127Author
128------
129Written by Linus Torvalds <torvalds@osdl.org>, but somewhat
1891261e
JH
130butchered by Junio C Hamano <junkio@cox.net>. Later significantly
131updated by Shawn Pearce <spearce@spearce.org>.
c06818e2
JH
132
133Documentation
134--------------
135Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
136
137GIT
138---
5162e697 139Part of the linkgit:git[7] suite