git-ls-remote(1)
================

NAME
----
git-ls-remote - List references in a remote repository


SYNOPSIS
--------
[verse]
'git ls-remote' [--heads] [--tags] [--refs] [--upload-pack=<exec>]
	      [-q | --quiet] [--exit-code] [--get-url] [--sort=<key>]
	      [--symref] [<repository> [<patterns>...]]

DESCRIPTION
-----------
Displays references available in a remote repository along with the associated
commit IDs.


OPTIONS
-------
-h::
--heads::
-t::
--tags::
	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.  Note that `git ls-remote -h` used without
	anything else on the command line gives help, consistent
	with other git subcommands.

--refs::
	Do not show peeled tags or pseudorefs like `HEAD` in the output.

-q::
--quiet::
	Do not print remote URL to stderr.

--upload-pack=<exec>::
	Specify the full path of 'git-upload-pack' on the remote
	host. This allows listing references from repositories accessed via
	SSH and where the SSH daemon does not use the PATH configured by the
	user.

--exit-code::
	Exit with status "2" when no matching refs are found in the remote
	repository. Usually the command exits with status "0" to indicate
	it successfully talked with the remote repository, whether it
	found any matching refs.

--get-url::
	Expand the URL of the given remote repository taking into account any
	"url.<base>.insteadOf" config setting (See linkgit:git-config[1]) and
	exit without talking to the remote.

--symref::
	In addition to the object pointed by it, show the underlying
	ref pointed by it when showing a symbolic ref.  Currently,
	upload-pack only shows the symref HEAD, so it will be the only
	one shown by ls-remote.

--sort=<key>::
	Sort based on the key given. Prefix `-` to sort in descending order
	of the value. Supports "version:refname" or "v:refname" (tag names
	are treated as versions). The "version:refname" sort order can also
	be affected by the "versionsort.suffix" configuration variable.
	See linkgit:git-for-each-ref[1] for more sort options, but be aware
	keys like `committerdate` that require access to the objects
	themselves will not work for refs whose objects have not yet been
	fetched from the remote, and will give a `missing object` error.

-o <option>::
--server-option=<option>::
	Transmit the given string to the server when communicating using
	protocol version 2.  The given string must not contain a NUL or LF
	character.
	When multiple `--server-option=<option>` are given, they are all
	sent to the other side in the order listed on the command line.

<repository>::
	The "remote" repository to query.  This parameter can be
	either a URL or the name of a remote (see the GIT URLS and
	REMOTES sections of linkgit:git-fetch[1]).

<patterns>...::
	When unspecified, all references, after filtering done
	with --heads and --tags, are shown.  When <patterns>... are
	specified, only references matching one or more of the given
	patterns are displayed. Each pattern is interpreted as a glob
	(see `glob` in linkgit:gitglossary[7]) which is matched against
	the "tail" of a ref, starting either from the start of the ref
	(so a full name like `refs/heads/foo` matches) or from a slash
	separator (so `bar` matches `refs/heads/bar` but not
	`refs/heads/foobar`).

OUTPUT
------

The output is in the format:

------------
<oid> TAB <ref> LF
------------

When showing an annotated tag, unless `--refs` is given, two such
lines are shown: one with the refname for the tag itself as `<ref>`,
and another with `<ref>` followed by `^{}`. The `<oid>` on the latter
line shows the name of the object the tag points at.

EXAMPLES
--------

* List all references (including symbolics and pseudorefs), peeling
  tags:
+
----
$ git ls-remote
27d43aaaf50ef0ae014b88bba294f93658016a2e	HEAD
950264636c68591989456e3ba0a5442f93152c1a	refs/heads/main
d9ab777d41f92a8c1684c91cfb02053d7dd1046b	refs/heads/next
d4ca2e3147b409459955613c152220f4db848ee1	refs/tags/v2.40.0
73876f4861cd3d187a4682290ab75c9dccadbc56	refs/tags/v2.40.0^{}
----

* List all references matching given patterns:
+
----
$ git ls-remote http://www.kernel.org/pub/scm/git/git.git master seen rc
5fe978a5381f1fbad26a80e682ddd2a401966740	refs/heads/master
c781a84b5204fb294c9ccc79f8b3baceeb32c061	refs/heads/seen
----

* List only tags matching a given wildcard pattern:
+
----
$ git ls-remote --tags http://www.kernel.org/pub/scm/git/git.git v\*
485a869c64a68cc5795dd99689797c5900f4716d	refs/tags/v2.39.2
cbf04937d5b9fcf0a76c28f69e6294e9e3ecd7e6	refs/tags/v2.39.2^{}
d4ca2e3147b409459955613c152220f4db848ee1	refs/tags/v2.40.0
73876f4861cd3d187a4682290ab75c9dccadbc56	refs/tags/v2.40.0^{}
----

SEE ALSO
--------
linkgit:git-check-ref-format[1].

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