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 SHA-1 hash, not the reference name. When combined with
	--dereference the dereferenced tag will still be shown after the SHA-1.

--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
