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