Autogenerated HTML docs for v1.7.7-325-g05f6ed
[git/jnareb-git.git] / git-describe.html
blobc6607eac5ede664276b4b411af6b8712e7b8b86b
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6 <meta name="generator" content="AsciiDoc 8.5.2" />
7 <title>git-describe(1)</title>
8 <style type="text/css">
9 /* Debug borders */
10 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
12 border: 1px solid red;
16 body {
17 margin: 1em 5% 1em 5%;
20 a {
21 color: blue;
22 text-decoration: underline;
24 a:visited {
25 color: fuchsia;
28 em {
29 font-style: italic;
30 color: navy;
33 strong {
34 font-weight: bold;
35 color: #083194;
38 tt {
39 color: navy;
42 h1, h2, h3, h4, h5, h6 {
43 color: #527bbd;
44 font-family: sans-serif;
45 margin-top: 1.2em;
46 margin-bottom: 0.5em;
47 line-height: 1.3;
50 h1, h2, h3 {
51 border-bottom: 2px solid silver;
53 h2 {
54 padding-top: 0.5em;
56 h3 {
57 float: left;
59 h3 + * {
60 clear: left;
63 div.sectionbody {
64 font-family: serif;
65 margin-left: 0;
68 hr {
69 border: 1px solid silver;
72 p {
73 margin-top: 0.5em;
74 margin-bottom: 0.5em;
77 ul, ol, li > p {
78 margin-top: 0;
81 pre {
82 padding: 0;
83 margin: 0;
86 span#author {
87 color: #527bbd;
88 font-family: sans-serif;
89 font-weight: bold;
90 font-size: 1.1em;
92 span#email {
94 span#revnumber, span#revdate, span#revremark {
95 font-family: sans-serif;
98 div#footer {
99 font-family: sans-serif;
100 font-size: small;
101 border-top: 2px solid silver;
102 padding-top: 0.5em;
103 margin-top: 4.0em;
105 div#footer-text {
106 float: left;
107 padding-bottom: 0.5em;
109 div#footer-badges {
110 float: right;
111 padding-bottom: 0.5em;
114 div#preamble {
115 margin-top: 1.5em;
116 margin-bottom: 1.5em;
118 div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
119 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
120 div.admonitionblock {
121 margin-top: 1.0em;
122 margin-bottom: 1.5em;
124 div.admonitionblock {
125 margin-top: 2.0em;
126 margin-bottom: 2.0em;
127 margin-right: 10%;
128 color: #606060;
131 div.content { /* Block element content. */
132 padding: 0;
135 /* Block element titles. */
136 div.title, caption.title {
137 color: #527bbd;
138 font-family: sans-serif;
139 font-weight: bold;
140 text-align: left;
141 margin-top: 1.0em;
142 margin-bottom: 0.5em;
144 div.title + * {
145 margin-top: 0;
148 td div.title:first-child {
149 margin-top: 0.0em;
151 div.content div.title:first-child {
152 margin-top: 0.0em;
154 div.content + div.title {
155 margin-top: 0.0em;
158 div.sidebarblock > div.content {
159 background: #ffffee;
160 border: 1px solid silver;
161 padding: 0.5em;
164 div.listingblock > div.content {
165 border: 1px solid silver;
166 background: #f4f4f4;
167 padding: 0.5em;
170 div.quoteblock, div.verseblock {
171 padding-left: 1.0em;
172 margin-left: 1.0em;
173 margin-right: 10%;
174 border-left: 5px solid #dddddd;
175 color: #777777;
178 div.quoteblock > div.attribution {
179 padding-top: 0.5em;
180 text-align: right;
183 div.verseblock > div.content {
184 white-space: pre;
186 div.verseblock > div.attribution {
187 padding-top: 0.75em;
188 text-align: left;
190 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */
191 div.verseblock + div.attribution {
192 text-align: left;
195 div.admonitionblock .icon {
196 vertical-align: top;
197 font-size: 1.1em;
198 font-weight: bold;
199 text-decoration: underline;
200 color: #527bbd;
201 padding-right: 0.5em;
203 div.admonitionblock td.content {
204 padding-left: 0.5em;
205 border-left: 3px solid #dddddd;
208 div.exampleblock > div.content {
209 border-left: 3px solid #dddddd;
210 padding-left: 0.5em;
213 div.imageblock div.content { padding-left: 0; }
214 span.image img { border-style: none; }
215 a.image:visited { color: white; }
217 dl {
218 margin-top: 0.8em;
219 margin-bottom: 0.8em;
221 dt {
222 margin-top: 0.5em;
223 margin-bottom: 0;
224 font-style: normal;
225 color: navy;
227 dd > *:first-child {
228 margin-top: 0.1em;
231 ul, ol {
232 list-style-position: outside;
234 ol.arabic {
235 list-style-type: decimal;
237 ol.loweralpha {
238 list-style-type: lower-alpha;
240 ol.upperalpha {
241 list-style-type: upper-alpha;
243 ol.lowerroman {
244 list-style-type: lower-roman;
246 ol.upperroman {
247 list-style-type: upper-roman;
250 div.compact ul, div.compact ol,
251 div.compact p, div.compact p,
252 div.compact div, div.compact div {
253 margin-top: 0.1em;
254 margin-bottom: 0.1em;
257 div.tableblock > table {
258 border: 3px solid #527bbd;
260 thead, p.table.header {
261 font-family: sans-serif;
262 font-weight: bold;
264 tfoot {
265 font-weight: bold;
267 td > div.verse {
268 white-space: pre;
270 p.table {
271 margin-top: 0;
273 /* Because the table frame attribute is overriden by CSS in most browsers. */
274 div.tableblock > table[frame="void"] {
275 border-style: none;
277 div.tableblock > table[frame="hsides"] {
278 border-left-style: none;
279 border-right-style: none;
281 div.tableblock > table[frame="vsides"] {
282 border-top-style: none;
283 border-bottom-style: none;
287 div.hdlist {
288 margin-top: 0.8em;
289 margin-bottom: 0.8em;
291 div.hdlist tr {
292 padding-bottom: 15px;
294 dt.hdlist1.strong, td.hdlist1.strong {
295 font-weight: bold;
297 td.hdlist1 {
298 vertical-align: top;
299 font-style: normal;
300 padding-right: 0.8em;
301 color: navy;
303 td.hdlist2 {
304 vertical-align: top;
306 div.hdlist.compact tr {
307 margin: 0;
308 padding-bottom: 0;
311 .comment {
312 background: yellow;
315 .footnote, .footnoteref {
316 font-size: 0.8em;
319 span.footnote, span.footnoteref {
320 vertical-align: super;
323 #footnotes {
324 margin: 20px 0 20px 0;
325 padding: 7px 0 0 0;
328 #footnotes div.footnote {
329 margin: 0 0 5px 0;
332 #footnotes hr {
333 border: none;
334 border-top: 1px solid silver;
335 height: 1px;
336 text-align: left;
337 margin-left: 0;
338 width: 20%;
339 min-width: 100px;
343 @media print {
344 div#footer-badges { display: none; }
347 div#toc {
348 margin-bottom: 2.5em;
351 div#toctitle {
352 color: #527bbd;
353 font-family: sans-serif;
354 font-size: 1.1em;
355 font-weight: bold;
356 margin-top: 1.0em;
357 margin-bottom: 0.1em;
360 div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
361 margin-top: 0;
362 margin-bottom: 0;
364 div.toclevel2 {
365 margin-left: 2em;
366 font-size: 0.9em;
368 div.toclevel3 {
369 margin-left: 4em;
370 font-size: 0.9em;
372 div.toclevel4 {
373 margin-left: 6em;
374 font-size: 0.9em;
376 /* Overrides for manpage documents */
377 h1 {
378 padding-top: 0.5em;
379 padding-bottom: 0.5em;
380 border-top: 2px solid silver;
381 border-bottom: 2px solid silver;
383 h2 {
384 border-style: none;
386 div.sectionbody {
387 margin-left: 5%;
390 @media print {
391 div#toc { display: none; }
394 /* Workarounds for IE6's broken and incomplete CSS2. */
396 div.sidebar-content {
397 background: #ffffee;
398 border: 1px solid silver;
399 padding: 0.5em;
401 div.sidebar-title, div.image-title {
402 color: #527bbd;
403 font-family: sans-serif;
404 font-weight: bold;
405 margin-top: 0.0em;
406 margin-bottom: 0.5em;
409 div.listingblock div.content {
410 border: 1px solid silver;
411 background: #f4f4f4;
412 padding: 0.5em;
415 div.quoteblock-attribution {
416 padding-top: 0.5em;
417 text-align: right;
420 div.verseblock-content {
421 white-space: pre;
423 div.verseblock-attribution {
424 padding-top: 0.75em;
425 text-align: left;
428 div.exampleblock-content {
429 border-left: 3px solid #dddddd;
430 padding-left: 0.5em;
433 /* IE6 sets dynamically generated links as visited. */
434 div#toc a:visited { color: blue; }
435 </style>
436 <script type="text/javascript">
437 /*<![CDATA[*/
438 window.onload = function(){asciidoc.footnotes();}
439 var asciidoc = { // Namespace.
441 /////////////////////////////////////////////////////////////////////
442 // Table Of Contents generator
443 /////////////////////////////////////////////////////////////////////
445 /* Author: Mihai Bazon, September 2002
446 * http://students.infoiasi.ro/~mishoo
448 * Table Of Content generator
449 * Version: 0.4
451 * Feel free to use this script under the terms of the GNU General Public
452 * License, as long as you do not remove or alter this notice.
455 /* modified by Troy D. Hanson, September 2006. License: GPL */
456 /* modified by Stuart Rackham, 2006, 2009. License: GPL */
458 // toclevels = 1..4.
459 toc: function (toclevels) {
461 function getText(el) {
462 var text = "";
463 for (var i = el.firstChild; i != null; i = i.nextSibling) {
464 if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
465 text += i.data;
466 else if (i.firstChild != null)
467 text += getText(i);
469 return text;
472 function TocEntry(el, text, toclevel) {
473 this.element = el;
474 this.text = text;
475 this.toclevel = toclevel;
478 function tocEntries(el, toclevels) {
479 var result = new Array;
480 var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
481 // Function that scans the DOM tree for header elements (the DOM2
482 // nodeIterator API would be a better technique but not supported by all
483 // browsers).
484 var iterate = function (el) {
485 for (var i = el.firstChild; i != null; i = i.nextSibling) {
486 if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
487 var mo = re.exec(i.tagName);
488 if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
489 result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
491 iterate(i);
495 iterate(el);
496 return result;
499 var toc = document.getElementById("toc");
500 var entries = tocEntries(document.getElementById("content"), toclevels);
501 for (var i = 0; i < entries.length; ++i) {
502 var entry = entries[i];
503 if (entry.element.id == "")
504 entry.element.id = "_toc_" + i;
505 var a = document.createElement("a");
506 a.href = "#" + entry.element.id;
507 a.appendChild(document.createTextNode(entry.text));
508 var div = document.createElement("div");
509 div.appendChild(a);
510 div.className = "toclevel" + entry.toclevel;
511 toc.appendChild(div);
513 if (entries.length == 0)
514 toc.parentNode.removeChild(toc);
518 /////////////////////////////////////////////////////////////////////
519 // Footnotes generator
520 /////////////////////////////////////////////////////////////////////
522 /* Based on footnote generation code from:
523 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
526 footnotes: function () {
527 var cont = document.getElementById("content");
528 var noteholder = document.getElementById("footnotes");
529 var spans = cont.getElementsByTagName("span");
530 var refs = {};
531 var n = 0;
532 for (i=0; i<spans.length; i++) {
533 if (spans[i].className == "footnote") {
534 n++;
535 // Use [\s\S] in place of . so multi-line matches work.
536 // Because JavaScript has no s (dotall) regex flag.
537 note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
538 noteholder.innerHTML +=
539 "<div class='footnote' id='_footnote_" + n + "'>" +
540 "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
541 n + "</a>. " + note + "</div>";
542 spans[i].innerHTML =
543 "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
544 "' title='View footnote' class='footnote'>" + n + "</a>]";
545 var id =spans[i].getAttribute("id");
546 if (id != null) refs["#"+id] = n;
549 if (n == 0)
550 noteholder.parentNode.removeChild(noteholder);
551 else {
552 // Process footnoterefs.
553 for (i=0; i<spans.length; i++) {
554 if (spans[i].className == "footnoteref") {
555 var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
556 href = href.match(/#.*/)[0]; // Because IE return full URL.
557 n = refs[href];
558 spans[i].innerHTML =
559 "[<a href='#_footnote_" + n +
560 "' title='View footnote' class='footnote'>" + n + "</a>]";
567 /*]]>*/
568 </script>
569 </head>
570 <body>
571 <div id="header">
572 <h1>
573 git-describe(1) Manual Page
574 </h1>
575 <h2>NAME</h2>
576 <div class="sectionbody">
577 <p>git-describe -
578 Show the most recent tag that is reachable from a commit
579 </p>
580 </div>
581 </div>
582 <div id="content">
583 <h2 id="_synopsis">SYNOPSIS</h2>
584 <div class="sectionbody">
585 <div class="verseblock">
586 <div class="verseblock-content"><em>git describe</em> [--all] [--tags] [--contains] [--abbrev=&lt;n&gt;] &lt;committish&gt;&#8230;
587 <em>git describe</em> [--all] [--tags] [--contains] [--abbrev=&lt;n&gt;] --dirty[=&lt;mark&gt;]</div>
588 <div class="verseblock-attribution">
589 </div></div>
590 </div>
591 <h2 id="_description">DESCRIPTION</h2>
592 <div class="sectionbody">
593 <div class="paragraph"><p>The command finds the most recent tag that is reachable from a
594 commit. If the tag points to the commit, then only the tag is
595 shown. Otherwise, it suffixes the tag name with the number of
596 additional commits on top of the tagged object and the
597 abbreviated object name of the most recent commit.</p></div>
598 <div class="paragraph"><p>By default (without --all or --tags) <tt>git describe</tt> only shows
599 annotated tags. For more information about creating annotated tags
600 see the -a and -s options to <a href="git-tag.html">git-tag(1)</a>.</p></div>
601 </div>
602 <h2 id="_options">OPTIONS</h2>
603 <div class="sectionbody">
604 <div class="dlist"><dl>
605 <dt class="hdlist1">
606 &lt;committish&gt;&#8230;
607 </dt>
608 <dd>
610 Committish object names to describe.
611 </p>
612 </dd>
613 <dt class="hdlist1">
614 --dirty[=&lt;mark&gt;]
615 </dt>
616 <dd>
618 Describe the working tree.
619 It means describe HEAD and appends &lt;mark&gt; (<tt>-dirty</tt> by
620 default) if the working tree is dirty.
621 </p>
622 </dd>
623 <dt class="hdlist1">
624 --all
625 </dt>
626 <dd>
628 Instead of using only the annotated tags, use any ref
629 found in <tt>.git/refs/</tt>. This option enables matching
630 any known branch, remote-tracking branch, or lightweight tag.
631 </p>
632 </dd>
633 <dt class="hdlist1">
634 --tags
635 </dt>
636 <dd>
638 Instead of using only the annotated tags, use any tag
639 found in <tt>.git/refs/tags</tt>. This option enables matching
640 a lightweight (non-annotated) tag.
641 </p>
642 </dd>
643 <dt class="hdlist1">
644 --contains
645 </dt>
646 <dd>
648 Instead of finding the tag that predates the commit, find
649 the tag that comes after the commit, and thus contains it.
650 Automatically implies --tags.
651 </p>
652 </dd>
653 <dt class="hdlist1">
654 --abbrev=&lt;n&gt;
655 </dt>
656 <dd>
658 Instead of using the default 7 hexadecimal digits as the
659 abbreviated object name, use &lt;n&gt; digits, or as many digits
660 as needed to form a unique object name. An &lt;n&gt; of 0
661 will suppress long format, only showing the closest tag.
662 </p>
663 </dd>
664 <dt class="hdlist1">
665 --candidates=&lt;n&gt;
666 </dt>
667 <dd>
669 Instead of considering only the 10 most recent tags as
670 candidates to describe the input committish consider
671 up to &lt;n&gt; candidates. Increasing &lt;n&gt; above 10 will take
672 slightly longer but may produce a more accurate result.
673 An &lt;n&gt; of 0 will cause only exact matches to be output.
674 </p>
675 </dd>
676 <dt class="hdlist1">
677 --exact-match
678 </dt>
679 <dd>
681 Only output exact matches (a tag directly references the
682 supplied commit). This is a synonym for --candidates=0.
683 </p>
684 </dd>
685 <dt class="hdlist1">
686 --debug
687 </dt>
688 <dd>
690 Verbosely display information about the searching strategy
691 being employed to standard error. The tag name will still
692 be printed to standard out.
693 </p>
694 </dd>
695 <dt class="hdlist1">
696 --long
697 </dt>
698 <dd>
700 Always output the long format (the tag, the number of commits
701 and the abbreviated commit name) even when it matches a tag.
702 This is useful when you want to see parts of the commit object name
703 in "describe" output, even when the commit in question happens to be
704 a tagged version. Instead of just emitting the tag name, it will
705 describe such a commit as v1.2-0-gdeadbee (0th commit since tag v1.2
706 that points at object deadbee&#8230;.).
707 </p>
708 </dd>
709 <dt class="hdlist1">
710 --match &lt;pattern&gt;
711 </dt>
712 <dd>
714 Only consider tags matching the given pattern (can be used to avoid
715 leaking private tags made from the repository).
716 </p>
717 </dd>
718 <dt class="hdlist1">
719 --always
720 </dt>
721 <dd>
723 Show uniquely abbreviated commit object as fallback.
724 </p>
725 </dd>
726 </dl></div>
727 </div>
728 <h2 id="_examples">EXAMPLES</h2>
729 <div class="sectionbody">
730 <div class="paragraph"><p>With something like git.git current tree, I get:</p></div>
731 <div class="literalblock">
732 <div class="content">
733 <pre><tt>[torvalds@g5 git]$ git describe parent
734 v1.0.4-14-g2414721</tt></pre>
735 </div></div>
736 <div class="paragraph"><p>i.e. the current head of my "parent" branch is based on v1.0.4,
737 but since it has a few commits on top of that,
738 describe has added the number of additional commits ("14") and
739 an abbreviated object name for the commit itself ("2414721")
740 at the end.</p></div>
741 <div class="paragraph"><p>The number of additional commits is the number
742 of commits which would be displayed by "git log v1.0.4..parent".
743 The hash suffix is "-g" + 7-char abbreviation for the tip commit
744 of parent (which was <tt>2414721b194453f058079d897d13c4e377f92dc6</tt>).
745 The "g" prefix stands for "git" and is used to allow describing the version of
746 a software depending on the SCM the software is managed with. This is useful
747 in an environment where people may use different SCMs.</p></div>
748 <div class="paragraph"><p>Doing a <em>git describe</em> on a tag-name will just show the tag name:</p></div>
749 <div class="literalblock">
750 <div class="content">
751 <pre><tt>[torvalds@g5 git]$ git describe v1.0.4
752 v1.0.4</tt></pre>
753 </div></div>
754 <div class="paragraph"><p>With --all, the command can use branch heads as references, so
755 the output shows the reference path as well:</p></div>
756 <div class="literalblock">
757 <div class="content">
758 <pre><tt>[torvalds@g5 git]$ git describe --all --abbrev=4 v1.0.5^2
759 tags/v1.0.0-21-g975b</tt></pre>
760 </div></div>
761 <div class="literalblock">
762 <div class="content">
763 <pre><tt>[torvalds@g5 git]$ git describe --all --abbrev=4 HEAD^
764 heads/lt/describe-7-g975b</tt></pre>
765 </div></div>
766 <div class="paragraph"><p>With --abbrev set to 0, the command can be used to find the
767 closest tagname without any suffix:</p></div>
768 <div class="literalblock">
769 <div class="content">
770 <pre><tt>[torvalds@g5 git]$ git describe --abbrev=0 v1.0.5^2
771 tags/v1.0.0</tt></pre>
772 </div></div>
773 <div class="paragraph"><p>Note that the suffix you get if you type these commands today may be
774 longer than what Linus saw above when he ran these commands, as your
775 git repository may have new commits whose object names begin with
776 975b that did not exist back then, and "-g975b" suffix alone may not
777 be sufficient to disambiguate these commits.</p></div>
778 </div>
779 <h2 id="_search_strategy">SEARCH STRATEGY</h2>
780 <div class="sectionbody">
781 <div class="paragraph"><p>For each committish supplied, <em>git describe</em> will first look for
782 a tag which tags exactly that commit. Annotated tags will always
783 be preferred over lightweight tags, and tags with newer dates will
784 always be preferred over tags with older dates. If an exact match
785 is found, its name will be output and searching will stop.</p></div>
786 <div class="paragraph"><p>If an exact match was not found, <em>git describe</em> will walk back
787 through the commit history to locate an ancestor commit which
788 has been tagged. The ancestor&#8217;s tag will be output along with an
789 abbreviation of the input committish&#8217;s SHA1.</p></div>
790 <div class="paragraph"><p>If multiple tags were found during the walk then the tag which
791 has the fewest commits different from the input committish will be
792 selected and output. Here fewest commits different is defined as
793 the number of commits which would be shown by <tt>git log tag..input</tt>
794 will be the smallest number of commits possible.</p></div>
795 </div>
796 <h2 id="_git">GIT</h2>
797 <div class="sectionbody">
798 <div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
799 </div>
800 </div>
801 <div id="footnotes"><hr /></div>
802 <div id="footer">
803 <div id="footer-text">
804 Last updated 2011-09-21 23:01:14 PDT
805 </div>
806 </div>
807 </body>
808 </html>