git-show-ref(1)
===============

NAME
----
git-show-ref - List references in a local repository

SYNOPSIS
--------
[verse]
'git show-ref' [-q|--quiet] [--verify] [--head] [-d|--dereference]
	     [-s|--hash[=<n>]] [--abbrev[=<n>]] [--tags]
	     [--heads] [--] [<pattern>...]
'git show-ref' --exclude-existing[=<pattern>] < ref-list

DESCRIPTION
-----------

Displays references available in a local repository along with the associated
commit IDs. Results can be filtered using a pattern and tags can be
dereferenced into object IDs. Additionally, it can be used to test whether a
particular ref exists.

The --exclude-existing form is a filter that does the inverse, it shows the
refs from stdin that don't exist in the local repository.

Use of this utility is encouraged in favor of directly accessing files under
the `.git` directory.

OPTIONS
-------

--head::

	Show the HEAD reference.

--tags::
--heads::

	Limit to only "refs/heads" and "refs/tags", respectively.  These
	options are not mutually exclusive; when given both, references stored
	in "refs/heads" and "refs/tags" are displayed.

-d::
--dereference::

	Dereference tags into object IDs as well. They will be shown with "{caret}{}"
	appended.

-s::
--hash[=<n>]::

	Only show the SHA1 hash, not the reference name. When combined with
	--dereference the dereferenced tag will still be shown after the SHA1.

--verify::

	Enable stricter reference checking by requiring an exact ref path.
	Aside from returning an error code of 1, it will also print an error
	message if '--quiet' was not specified.

--abbrev[=<n>]::

	Abbreviate the object name.  When using `--hash`, you do
	not have to say `--hash --abbrev`; `--hash=n` would do.

-q::
--quiet::

	Do not print any results to stdout. When combined with '--verify' this
	can be used to silently check if a reference exists.

--exclude-existing[=<pattern>]::

	Make 'git show-ref' act as a filter that reads refs from stdin of the
	form "`^(?:<anything>\s)?<refname>(?:\^{})?$`"
	and performs the following actions on each:
	(1) strip "{caret}{}" at the end of line if any;
	(2) ignore if pattern is provided and does not head-match refname;
	(3) warn if refname is not a well-formed refname and skip;
	(4) ignore if refname is a ref that exists in the local repository;
	(5) otherwise output the line.


<pattern>...::

	Show references matching one or more patterns. Patterns are matched from
	the end of the full name, and only complete parts are matched, e.g.
	'master' matches 'refs/heads/master', 'refs/remotes/origin/master',
	'refs/tags/jedi/master' but not 'refs/heads/mymaster' nor
	'refs/remotes/master/jedi'.

OUTPUT
------

The output is in the format: '<SHA-1 ID>' '<space>' '<reference name>'.

-----------------------------------------------------------------------------
$ git show-ref --head --dereference
832e76a9899f560a90ffd62ae2ce83bbeff58f54 HEAD
832e76a9899f560a90ffd62ae2ce83bbeff58f54 refs/heads/master
832e76a9899f560a90ffd62ae2ce83bbeff58f54 refs/heads/origin
3521017556c5de4159da4615a39fa4d5d2c279b5 refs/tags/v0.99.9c
6ddc0964034342519a87fe013781abf31c6db6ad refs/tags/v0.99.9c^{}
055e4ae3ae6eb344cbabf2a5256a49ea66040131 refs/tags/v1.0rc4
423325a2d24638ddcc82ce47be5e40be550f4507 refs/tags/v1.0rc4^{}
...
-----------------------------------------------------------------------------

When using --hash (and not --dereference) the output format is: '<SHA-1 ID>'

-----------------------------------------------------------------------------
$ git show-ref --heads --hash
2e3ba0114a1f52b47df29743d6915d056be13278
185008ae97960c8d551adcd9e23565194651b5d1
03adf42c988195b50e1a1935ba5fcbc39b2b029b
...
-----------------------------------------------------------------------------

EXAMPLE
-------

To show all references called "master", whether tags or heads or anything
else, and regardless of how deep in the reference naming hierarchy they are,
use:

-----------------------------------------------------------------------------
	git show-ref master
-----------------------------------------------------------------------------

This will show "refs/heads/master" but also "refs/remote/other-repo/master",
if such references exists.

When using the '--verify' flag, the command requires an exact path:

-----------------------------------------------------------------------------
	git show-ref --verify refs/heads/master
-----------------------------------------------------------------------------

will only match the exact branch called "master".

If nothing matches, 'git show-ref' will return an error code of 1,
and in the case of verification, it will show an error message.

For scripting, you can ask it to be quiet with the "--quiet" flag, which
allows you to do things like

-----------------------------------------------------------------------------
	git show-ref --quiet --verify -- "refs/heads/$headname" ||
		echo "$headname is not a valid branch"
-----------------------------------------------------------------------------

to check whether a particular branch exists or not (notice how we don't
actually want to show any results, and we want to use the full refname for it
in order to not trigger the problem with ambiguous partial matches).

To show only tags, or only proper branch heads, use "--tags" and/or "--heads"
respectively (using both means that it shows tags and heads, but not other
random references under the refs/ subdirectory).

To do automatic tag object dereferencing, use the "-d" or "--dereference"
flag, so you can do

-----------------------------------------------------------------------------
	git show-ref --tags --dereference
-----------------------------------------------------------------------------

to get a listing of all tags together with what they dereference.

FILES
-----
`.git/refs/*`, `.git/packed-refs`

SEE ALSO
--------
linkgit:git-ls-remote[1],
linkgit:git-update-ref[1],
linkgit:gitrepository-layout[5]

GIT
---
Part of the linkgit:git[1] suite
