# git-show-ref
> 原文: [https://git-scm.com/docs/git-show-ref](https://git-scm.com/docs/git-show-ref)
## 名稱
git-show-ref - 列出本地存儲庫中的引用
## 概要
```
git show-ref [-q|--quiet] [--verify] [--head] [-d|--dereference]
[-s|--hash[=<n>]] [--abbrev[=<n>]] [--tags]
[--heads] [--] [<pattern>…?]
git show-ref --exclude-existing[=<pattern>]
```
## 描述
顯示本地存儲庫中可用的引用以及關聯的提交ID。可以使用模式過濾結果,并且可以將標記解除引用到對象ID中。此外,它還可用于測試特定引用是否存在。
默認情況下,顯示標簽,磁頭和遠程參考。
--exclude-existing表單是一個反向的過濾器。它從stdin讀取refs,每行一個ref,并顯示本地存儲庫中不存在的那些。
鼓勵使用此實用程序,以便直接訪問`.git`目錄下的文件。
## OPTIONS
```
--head
```
顯示HEAD引用,即使它通常會被過濾掉。
```
--heads
```
```
--tags
```
分別限于“refs / heads”和“refs / tags”。這些選擇并不相互排斥;當給出兩者時,顯示存儲在“refs / heads”和“refs / tags”中的引用。
```
-d
```
```
--dereference
```
取消引用標記到對象ID中。它們將顯示為附加“^ {}”。
```
-s
```
```
--hash[=<n>]
```
僅顯示SHA-1哈希值,而不是引用名稱。與--dereference結合使用時,仍會在SHA-1之后顯示解除引用的標記。
```
--verify
```
通過要求精確的ref路徑來啟用更嚴格的引用檢查。除了返回錯誤代碼1之外,如果未指定`--quiet`,它還將打印錯誤消息。
```
--abbrev[=<n>]
```
縮寫對象名稱。使用`--hash`時,您不必說`--hash --abbrev`; `--hash=n`會這樣做。
```
-q
```
```
--quiet
```
不要將任何結果打印到stdout。與`--verify`結合使用時,可以用于靜默檢查是否存在引用。
```
--exclude-existing[=<pattern>]
```
Make _git show-ref_ 充當從“`^(?:<anything>\s)?<refname>(?:\^{})?$`”形式的stdin讀取refs的過濾器,并對每個執行以下操作:(1)在行尾添加“^ {}”如果有的話(2)忽略是否提供了模式并且不匹配refname; (3)警告refname不是格式良好的refname并跳過; (4)忽略refname是否是本地存儲庫中存在的ref; (5)否則輸出該行。
```
<pattern>…?
```
顯示與一個或多個模式匹配的引用。模式從全名的末尾匹配,并且僅匹配完整的部分,例如, _master_ 匹配 _refs / heads / master_ , _refs / remotes / origin / master_ , _refs / tags / jedi / master_ 但不 _refs / heads / mymaster_ 或 _refs / remotes / master / jedi_ 。
## OUTPUT
輸出格式為:_< SHA-1 ID>_ _< space>_ _<參考名稱>_ 。
```
$ 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^{}
...
```
當使用--hash(而不是--dereference)時,輸出格式為:_< SHA-1 ID>_
```
$ git show-ref --heads --hash
2e3ba0114a1f52b47df29743d6915d056be13278
185008ae97960c8d551adcd9e23565194651b5d1
03adf42c988195b50e1a1935ba5fcbc39b2b029b
...
```
## 例子
要顯示所有稱為“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”和/或“--heads”(使用兩者表示它顯示標記和頭部,但不顯示refs /子目錄下的其他隨機引用)。
要進行自動標記對象解除引用,請使用“-d”或“--dereference”標志,這樣就可以了
```
git show-ref --tags --dereference
```
獲取所有標簽的列表以及它們取消引用的內容。
## FILES
`.git/refs/*`,`.git/packed-refs`
## 也可以看看
[git-for-each-ref [1]](https://git-scm.com/docs/git-for-each-ref) , [git-ls-remote [1]](https://git-scm.com/docs/git-ls-remote) , [git-update-ref [1]](https://git-scm.com/docs/git-update-ref) , [gitrepository-layout [5]](https://git-scm.com/docs/gitrepository-layout)
## GIT
部分 [git [1]](https://git-scm.com/docs/git) 套件
- git
- git-config
- git-help
- git-init
- git-clone
- git-add
- git-status
- git-diff
- git-commit
- git-reset
- git-rm
- git-mv
- git-branch
- git-checkout
- git-merge
- git-mergetool
- git-log
- git-stash
- git-tag
- git-worktree
- git-fetch
- git-pull
- git-push
- git-remote
- git-submodule
- git-show
- git-log
- git-shortlog
- git-describe
- git-apply
- git-cherry-pick
- git-rebase
- git-revert
- git-bisect
- git-blame
- git-grep
- gitattributes
- giteveryday
- gitglossary
- githooks
- gitignore
- gitmodules
- gitrevisions
- gittutorial
- gitworkflows
- git-am
- git-format-patch
- git-send-email
- git-request-pull
- git-svn
- git-fast-import
- git-clean
- git-gc
- git-fsck
- git-reflog
- git-filter-branch
- git-instaweb
- git-archive
- git-bundle
- git-daemon
- git-update-server-info
- git-cat-file
- git-check-ignore
- git-checkout-index
- git-commit-tree
- git-count-objects
- git-diff-index
- git-for-each-ref
- git-hash-object
- git-ls-files
- git-merge-base
- git-read-tree
- git-rev-list
- git-rev-parse
- git-show-ref
- git-symbolic-ref
- git-update-index
- git-update-ref
- git-verify-pack
- git-write-tree