git-ls-remote - Man Page

List references in a remote repository

Examples (TL;DR)

Synopsis

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

See Also

git-check-ref-format(1).

Git

Part of the git(1) suite

Referenced By

bpkg-repository-types(1), git(1), git-bundle(1), git-octopus(1), git-show-ref(1), tig(1), tigmanual(7).

02/23/2024 Git 2.44.0 Git Manual