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