Git
English ▾ 主題 ▾ 最新版本 ▾ 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>

描述

顯示本地儲存庫中可用的參考,以及相關的 commit ID。 可以使用模式篩選結果,並且可以將標籤取消參照為物件 ID。 此外,它可以用於測試特定參考是否存在。

預設情況下,會顯示標籤、heads 和遠端參考。

--exclude-existing 形式是一個執行相反操作的篩選器。 它從 stdin 讀取參考,每行一個參考,並顯示本地儲存庫中不存在的參考。

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

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

選項

--head

顯示 HEAD 參考,即使它通常會被篩選掉。

--branches
--tags

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

-d
--dereference

同時將標籤取消參照為物件 ID。它們將顯示並附加 ^{}

-s
--hash[=<n>]

僅顯示 OID,不顯示參考名稱。與 --dereference 結合使用時,取消參照的標籤仍會在 OID 之後顯示。

--verify

通過要求精確的參考路徑來啟用更嚴格的參考檢查。 除了返回錯誤代碼 1 之外,如果未指定 --quiet,它還會印出錯誤訊息。

--exists

檢查給定的參考是否存在。 如果存在,則返回退出代碼 0;如果不存在,則返回 2;如果查找參考失敗並出現除參考不存在之外的錯誤,則返回 1。

--abbrev[=<n>]

縮寫物件名稱。 使用 --hash 時,你不必說 --hash --abbrev--hash=n 就可以。

-q
--quiet

不要將任何結果印到 stdout。 可以與 --verify 一起使用,以靜默檢查參考是否存在。

--exclude-existing[=<pattern>]

使 git show-ref 充當篩選器,該篩選器從 stdin 讀取 ^(?:<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" 的參考,無論是標籤、heads 或任何其他,且無論它們在參考命名層次結構中有多深,請使用

	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,以避免觸發不明確的部分匹配問題)。

要僅顯示標籤,或僅顯示正確的分支 heads,請分別使用 --tags 和/或 --branches(同時使用兩者意味著它會顯示標籤和分支,但不顯示 refs/ 子目錄下的其他隨機參考)。

要執行自動標籤物件取消參照,請使用 -d--dereference 旗標,這樣你可以執行

	git show-ref --tags --dereference

以取得所有標籤及其取消參照的列表。

檔案

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

GIT

屬於 git[1] 套件的一部分

scroll-to-top