<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect2 SYSTEM "../../../dtd/dblite.dtd">

<sect2 lang="en" id="git-ls-remote(1)">
    <title>git-ls-remote(1)</title>
    <date>2024-07-02</date>
<revhistory><revision><date>2024-07-02</date></revision></revhistory>
<indexterm>
<primary>git-ls-remote(1)</primary>
</indexterm>
<simplesect id="git-ls-remote(1)__name">
<title>NAME</title>
<simpara>git-ls-remote - List references in a remote repository</simpara>
</simplesect>
<simplesect id="git-ls-remote(1)__synopsis">
<title>SYNOPSIS</title>
<blockquote>
<literallayout><emphasis>git ls-remote</emphasis> [--heads] [--tags] [--refs] [--upload-pack=&lt;exec&gt;]
              [-q | --quiet] [--exit-code] [--get-url] [--sort=&lt;key&gt;]
              [--symref] [&lt;repository&gt; [&lt;patterns&gt;&#8230;]]</literallayout>
</blockquote>
</simplesect>
<simplesect id="git-ls-remote(1)__description">
<title>DESCRIPTION</title>
<simpara>Displays references available in a remote repository along with the associated
commit IDs.</simpara>
</simplesect>
<simplesect id="git-ls-remote(1)__options">
<title>OPTIONS</title>
<variablelist>
<varlistentry>
<term>
-h
</term>
<term>
--heads
</term>
<term>
-t
</term>
<term>
--tags
</term>
<listitem>
<simpara>
        Limit to only refs/heads and refs/tags, respectively.
        These options are <emphasis>not</emphasis> mutually exclusive; when given
        both, references stored in refs/heads and refs/tags are
        displayed.  Note that <emphasis>git ls-remote -h</emphasis> used without
        anything else on the command line gives help, consistent
        with other git subcommands.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
--refs
</term>
<listitem>
<simpara>
        Do not show peeled tags or pseudorefs like <emphasis>HEAD</emphasis> in the output.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
-q
</term>
<term>
--quiet
</term>
<listitem>
<simpara>
        Do not print remote URL to stderr.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
--upload-pack=&lt;exec&gt;
</term>
<listitem>
<simpara>
        Specify the full path of <emphasis>git-upload-pack</emphasis> 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.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
--exit-code
</term>
<listitem>
<simpara>
        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.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
--get-url
</term>
<listitem>
<simpara>
        Expand the URL of the given remote repository taking into account any
        "url.&lt;base&gt;.insteadOf" config setting (See <xref linkend="git-config(1)" />) and
        exit without talking to the remote.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
--symref
</term>
<listitem>
<simpara>
        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.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
--sort=&lt;key&gt;
</term>
<listitem>
<simpara>
        Sort based on the key given. Prefix <emphasis>-</emphasis> 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 <xref linkend="git-for-each-ref(1)" /> for more sort options, but be aware
        keys like <emphasis>committerdate</emphasis> 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 <emphasis>missing object</emphasis> error.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
-o &lt;option&gt;
</term>
<term>
--server-option=&lt;option&gt;
</term>
<listitem>
<simpara>
        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 <emphasis>--server-option=&lt;option&gt;</emphasis> are given, they are all
        sent to the other side in the order listed on the command line.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
&lt;repository&gt;
</term>
<listitem>
<simpara>
        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 <xref linkend="git-fetch(1)" />).
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>
&lt;patterns&gt;&#8230;
</term>
<listitem>
<simpara>
        When unspecified, all references, after filtering done
        with --heads and --tags, are shown.  When &lt;patterns&gt;&#8230; are
        specified, only references matching one or more of the given
        patterns are displayed. Each pattern is interpreted as a glob
        (see <emphasis>glob</emphasis> in <xref linkend="gitglossary(7)" />) which is matched against
        the "tail" of a ref, starting either from the start of the ref
        (so a full name like <emphasis>refs/heads/foo</emphasis> matches) or from a slash
        separator (so <emphasis>bar</emphasis> matches <emphasis>refs/heads/bar</emphasis> but not
        <emphasis>refs/heads/foobar</emphasis>).
</simpara>
</listitem>
</varlistentry>
</variablelist>
</simplesect>
<simplesect id="git-ls-remote(1)__output">
<title>OUTPUT</title>
<simpara>The output is in the format:</simpara>
<screen>&lt;oid&gt; TAB &lt;ref&gt; LF</screen>
<simpara>When showing an annotated tag, unless <emphasis>--refs</emphasis> is given, two such
lines are shown: one with the refname for the tag itself as <emphasis>&lt;ref&gt;</emphasis>,
and another with <emphasis>&lt;ref&gt;</emphasis> followed by <emphasis>^{}</emphasis>. The <emphasis>&lt;oid&gt;</emphasis> on the latter
line shows the name of the object the tag points at.</simpara>
</simplesect>
<simplesect id="git-ls-remote(1)__examples">
<title>EXAMPLES</title>
<itemizedlist>
<listitem>
<simpara>
List all references (including symbolics and pseudorefs), peeling
  tags:
</simpara>
<screen>$ 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^{}</screen>
</listitem>
<listitem>
<simpara>
List all references matching given patterns:
</simpara>
<screen>$ git ls-remote http://www.kernel.org/pub/scm/git/git.git master seen rc
5fe978a5381f1fbad26a80e682ddd2a401966740        refs/heads/master
c781a84b5204fb294c9ccc79f8b3baceeb32c061        refs/heads/seen</screen>
</listitem>
<listitem>
<simpara>
List only tags matching a given wildcard pattern:
</simpara>
<screen>$ 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^{}</screen>
</listitem>
</itemizedlist>
</simplesect>
<simplesect id="git-ls-remote(1)__see_also">
<title>SEE ALSO</title>
<simpara><xref linkend="git-check-ref-format(1)" />.</simpara>
</simplesect>
<simplesect id="git-ls-remote(1)__git">
<title>GIT</title>
<simpara>Part of the <xref linkend="git(1)" /> suite</simpara>
</simplesect>
</sect2>
