Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 1 | git-describe(1) |
| 2 | =============== |
| 3 | |
| 4 | NAME |
| 5 | ---- |
Junio C Hamano | 0107892 | 2006-03-10 00:31:47 | [diff] [blame] | 6 | git-describe - Show the most recent tag that is reachable from a commit |
Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 7 | |
| 8 | |
| 9 | SYNOPSIS |
| 10 | -------- |
Junio C Hamano | 5e284b4 | 2007-05-22 07:23:37 | [diff] [blame] | 11 | 'git-describe' [--all] [--tags] [--contains] [--abbrev=<n>] <committish>... |
Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 12 | |
| 13 | DESCRIPTION |
| 14 | ----------- |
| 15 | The command finds the most recent tag that is reachable from a |
Junio C Hamano | 2fbcd21 | 2008-05-14 22:26:07 | [diff] [blame] | 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. |
Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 20 | |
| 21 | |
| 22 | OPTIONS |
| 23 | ------- |
| 24 | <committish>:: |
Junio C Hamano | 33db437 | 2006-06-07 19:51:45 | [diff] [blame] | 25 | The object name of the committish. |
Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 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 | |
Junio C Hamano | 5e284b4 | 2007-05-22 07:23:37 | [diff] [blame] | 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 | |
Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 40 | --abbrev=<n>:: |
| 41 | Instead of using the default 8 hexadecimal digits as the |
| 42 | abbreviated object name, use <n> digits. |
| 43 | |
Junio C Hamano | edd2b0a | 2007-01-15 06:12:45 | [diff] [blame] | 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. |
Junio C Hamano | 24bc09a | 2008-02-28 00:27:44 | [diff] [blame] | 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. |
Junio C Hamano | edd2b0a | 2007-01-15 06:12:45 | [diff] [blame] | 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. |
Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 59 | |
Junio C Hamano | 4f1d8c4 | 2008-03-03 02:01:16 | [diff] [blame] | 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 | |
Junio C Hamano | 9c33415 | 2008-02-12 03:18:52 | [diff] [blame] | 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 | |
Junio C Hamano | eb41599 | 2008-06-08 22:49:47 | [diff] [blame] | 73 | --always:: |
| 74 | Show uniquely abbreviated commit object as fallback. |
| 75 | |
Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 76 | EXAMPLES |
| 77 | -------- |
| 78 | |
| 79 | With something like git.git current tree, I get: |
| 80 | |
| 81 | [torvalds@g5 git]$ git-describe parent |
Junio C Hamano | a890c4f | 2007-01-28 10:29:21 | [diff] [blame] | 82 | v1.0.4-14-g2414721 |
Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 83 | |
| 84 | i.e. the current head of my "parent" branch is based on v1.0.4, |
Junio C Hamano | a890c4f | 2007-01-28 10:29:21 | [diff] [blame] | 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`). |
Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 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 |
Junio C Hamano | a890c4f | 2007-01-28 10:29:21 | [diff] [blame] | 104 | tags/v1.0.0-21-g975b |
Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 105 | |
| 106 | [torvalds@g5 git]$ git describe --all HEAD^ |
Junio C Hamano | a890c4f | 2007-01-28 10:29:21 | [diff] [blame] | 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 |
Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 114 | |
Junio C Hamano | edd2b0a | 2007-01-15 06:12:45 | [diff] [blame] | 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 | |
Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 135 | |
| 136 | Author |
| 137 | ------ |
| 138 | Written by Linus Torvalds <torvalds@osdl.org>, but somewhat |
Junio C Hamano | a890c4f | 2007-01-28 10:29:21 | [diff] [blame] | 139 | butchered by Junio C Hamano <junkio@cox.net>. Later significantly |
| 140 | updated by Shawn Pearce <spearce@spearce.org>. |
Junio C Hamano | ab00876 | 2005-12-28 02:33:00 | [diff] [blame] | 141 | |
| 142 | Documentation |
| 143 | -------------- |
| 144 | Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>. |
| 145 | |
| 146 | GIT |
| 147 | --- |
Junio C Hamano | f7c042d | 2008-06-06 22:50:53 | [diff] [blame] | 148 | Part of the linkgit:git[1] suite |