簡體中文 ▾ 主題 ▾ 最新版本 ▾ git-show-ref 最後更新於 2.46.0

名稱

git-show-ref - 列出本地倉庫中的引用

概要

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>

描述

顯示本地倉庫中可用的引用以及相關的提交 ID。結果可以使用模式進行過濾,標籤可以解除引用到物件 ID。此外,它還可以用於測試某個引用是否存在。

預設情況下,顯示標籤、HEAD 和遠端引用。

--exclude-existing 形式是一個過濾器,其作用相反。它從標準輸入讀取引用(每行一個),並顯示那些在本地倉庫中不存在的引用。

--exists 形式可用於檢查單個引用的存在。此形式不驗證引用是否解析到實際物件。

建議使用此實用程式,而不是直接訪問 .git 目錄下的檔案。

選項

--head

顯示 HEAD 引用,即使它通常會被過濾掉。

--branches
--tags

分別限制為本地分支和本地標籤。這些選項不是互斥的;當同時給出時,將顯示儲存在 "refs/heads" 和 "refs/tags" 中的引用。請注意,--heads--branches 的已棄用同義詞,將來可能會被移除。

-d
--dereference

同時將標籤解除引用到物件 ID。它們將顯示為帶有 ^{} 字尾。

-s
--hash[=<n>]

僅顯示 OID,而不顯示引用名稱。當與 --dereference 結合使用時,解除引用的標籤仍將顯示在 OID 之後。

--verify

透過要求精確的 ref 路徑來啟用更嚴格的引用檢查。除了返回錯誤程式碼 1 之外,如果未指定 --quiet,還會列印錯誤訊息。

--exists

檢查給定引用是否存在。如果存在,則返回退出程式碼 0;如果缺失,則返回 2;如果查詢引用失敗(除引用缺失外)則返回 1。

--abbrev[=<n>]

縮短物件名稱。在使用 --hash 時,您不必同時指定 --hash--abbrev--hash=n 即可。

-q
--quiet

不向 stdout 列印任何結果。可與 --verify 一起使用,以靜默檢查引用是否存在。

--exclude-existing[=<pattern>]

使 git show-ref 作為一個過濾器,從標準輸入讀取形式為 ^(?:<anything>\s)?<refname>(?:\^{})?$ 的引用,並對每個引用執行以下操作:(1) 如果行尾有 ^{},則將其刪除;(2) 如果提供了模式且模式不匹配 refname 的開頭,則忽略;(3) 如果 refname 不是格式正確的 refname,則發出警告並跳過;(4) 如果 refname 是本地倉庫中已存在的引用,則忽略;(5) 否則輸出該行。

<pattern>…​

顯示匹配一個或多個模式的引用。模式從完整名稱的末尾開始匹配,並且只匹配完整的組成部分,例如 master 匹配 refs/heads/masterrefs/remotes/origin/masterrefs/tags/jedi/master,但不匹配 refs/heads/mymasterrefs/remotes/master/jedi

輸出

輸出格式為

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

當使用 --hash(且不使用 --dereference)時,輸出格式為

<oid> LF

例如,

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

示例

要顯示所有名為 "master" 的引用,無論是標籤、HEAD 還是其他任何引用,並且無論它們在引用命名層次結構中的深度如何,請使用

	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 來避免觸發歧義的部分匹配問題)。

要僅顯示標籤,或僅顯示正確的本地分支 HEAD,請分別使用 --tags 和/或 --branches(同時使用意味著它顯示標籤和分支,但不是 refs/ 子目錄下的其他隨機引用)。

要進行自動標籤物件解除引用,請使用 -d--dereference 標誌,這樣您就可以執行

	git show-ref --tags --dereference

來獲取所有標籤及其解除引用的列表。

檔案

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

GIT

Git[1] 套件的一部分