SYNOPSIS

git show-ref [--head] [-d | --dereference]
             [-s | --hash[=<n>]] [--abbrev[=<n>]] [--branches] [--tags]
             [--] [<pattern>…]
git show-ref --verify [-q | --quiet] [-d | --dereference]
             [-s | --hash[=<n>]] [--abbrev[=<n>]]
             [--] [<ref>…]
git show-ref --exclude-existing[=<pattern>]
git show-ref --exists <ref>

DESCRIPTION

ローカルリポジトリで使用可能な参照を、関連するコミットIDとともに表示します。結果はパターンを使用してフィルタリングでき、タグはオブジェクトIDに逆参照できます。さらに、特定のrefが存在するかどうかをテストするために使用できます。

デフォルトでは、タグとヘッドとリモートrefを表示します。

--exclude-existing 形式は、逆を行うフィルターです。 stdinから1行に1つのrefを読み取り、ローカルリポジトリに存在しないものを表示します。

--exists 形式は、 単一の参照が存在するかどうかをチェックするために使用できます。 この形式では、 参照が実際のオブジェクトに解決されるかどうかは確認しません。

.git ディレクトリの下のファイルに直接アクセスするために、このユーティリティの使用をお勧めします。

OPTIONS

--head

通常は検索除外される場合でも、HEAD参照を表示します。

--branches
--tags

それぞれローカル・ブランチとローカル・タグに制限します。 これらのオプションは互いに排他的ではありません。 両方が指定された場合、 refs/headsrefs/tags に格納されている参照が表示されます。 注意: --heads--branches の非推奨の同義語であり、 将来的に削除される可能性があります。

-d
--dereference

タグをオブジェクトIDに対しても逆参照します。 ^{} を付加して表示されます。

-s
--hash[=<n>]

参照名ではなく、 OID のみ表示します。 --dereference と組み合わせると、逆参照されたタグが OID の後に依然として表示されます。

--verify

正確な参照パスを要求することにより、より厳密な参照チェックを有効にします。エラーコード1を返す以外に、 --quiet が指定されていない場合はエラーメッセージも出力します。

--exists

指定の参照が存在するかどうかを確認します。 存在する場合は exit コード 0 を、 存在しない場合は 2 を返します。 参照が存在しない以外のエラーで検索に失敗した場合は 1 を返します。

--abbrev[=<n>]

オブジェクト名を省略します。 --hash を使用する場合は --hash --abbrev と言う必要はなく、 --hash=n で十分です。

-q
--quiet

stdoutに結果を出力しません。 --verify と組み合わせて、 参照が存在するかどうかを黙って確認するために使用できます。

--exclude-existing[=<pattern>]

^(?:<anything>\s)?<refname>(?:\^{})?$ 形式でstdinからrefを読み取り、そのそれぞれに対して以下のアクションを実行するフィルターとして git show-ref を使います: (1) 行末の ^{} を削除します (2) パターンが指定されていて、refnameとヘッドが一致(head-match)しない場合は無視します (3) refnameが整形式(well-formed)のrefnameでない場合は警告し、スキップします (4) refnameがローカルリポジトリに存在するrefである場合は無視 (5) それ以外の場合は、行を出力します。

<pattern>…

1つ以上のパターンに一致する参照を表示します。パターンはフルネームの末尾から一致し、完全な部品のみが一致します。 「master」は「refs/heads/master」や「refs/remotes/origin/master」や「refs/tags/jedi/master」と一致しますが、「refs/heads/mymaster」とか「refs/remotes/master/jedi」とは一致しません 。

OUTPUT

出力は以下の形式になります:

<oid> SP <ref> LF

これは例えば以下のようになります

$ 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^{}
...

( --dereference ではなく、) --hash を使用する場合の出力形式:

<oid> LF

これは例えば以下のようになります

$ git show-ref --branches --hash
2e3ba0114a1f52b47df29743d6915d056be13278
185008ae97960c8d551adcd9e23565194651b5d1
03adf42c988195b50e1a1935ba5fcbc39b2b029b
...

EXAMPLES

タグやヘッドなど、「master」と呼ばれるすべての参照を表示するには、参照の名前付け階層の深さに関係なく、以下を使用します:

        git show-ref master

これにより、 refs/heads/master が表示されますが、 そのような参照が存在する場合には refs/remote/other-repo/master も表示されます。

--verify フラグを使用する場合、コマンドには正確なパスが必要です:

        git show-ref --verify refs/heads/master

これは「master」と呼ばれる正確なブランチにのみ一致します。

一致するものがない場合、 git show-ref はエラーコード1を返し、検証の場合はエラーメッセージを表示します。

スクリプトの場合は、 --quiet フラグを使用して静かにするように要求できます。これにより、以下のようにできます

        git show-ref --quiet --verify -- "refs/heads/$headname" ||
                echo "$headname is not a valid branch"

これは、特定のブランチが存在するかどうかを確認します(実際には結果を表示したくないので、あいまいな部分一致で問題が発生しないように、完全なrefnameを使用します)。

タグのみ、または適切なブランチ・ヘッドのみを表示するには、それぞれ --tags かつ/または --branches を使用します(両方を使用すると、タグとブランチ表示されますが、 refs/ サブディレクトリ下にある他のランダムな参照は表示されません)。

タグオブジェクトの自動逆参照を行うには、 -d または --dereference フラグを使用すると、以下のようにできます

        git show-ref --tags --dereference

これは、すべてのタグのリストを、それらが逆参照するものと一緒に取得します。

FILES

.git/refs/*, .git/packed-refs

SEE ALSO

GIT

Part of the git(1) suite