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

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


SYNOPSIS
--------
[verse]
'git ls-remote' [--branches] [--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
-------
-b::
--branches::
-t::
--tags::
	Limit to only local branches and local tags, respectively.
	These options are _not_ mutually exclusive; when given
	both, references stored in refs/heads and refs/tags are
	displayed.  Note that `--heads` and `-h` are deprecated
	synonyms for `--branches` and `-b` and may be removed in
	the future.  Also 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.
	When no `--server-option=<option>` is given from the command line,
	the values of configuration variable `remote.<name>.serverOption`
	are used instead.

<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
