2016-12-02 26 views

回答

1

我還沒有找到一個允許獲得這個結果的命令,但是這個過程允許解決這個問題。請考慮ref_sha是您希望爲其查找引用它的遠程標記或其後代之一的提交的散列。

可以使用以下命令列出遙控器上的標籤。

git ls-remote --tags 

輸出的每一行代表一個標籤。一行以指向對象的散列開始,後跟標記路徑。如果標籤指向一個帶註釋的標籤對象,則會添加第二行。標籤路徑後面跟着^ {},並且散列將是通過遞歸地解引用前一行的散列而獲得的對象的散列。

現在,我們需要取,因爲我們需要進行血統檢查。

git fetch 

現在,對於第一步中列出的每個標籤,我們需要使用以下命令進行血統檢查。讓rem_sha爲標籤指向的哈希。如果標記指向一個標記對象,則可以使用該散列或遞歸解除引用的對象散列。如果您將註釋標籤對象的散列提供給該命令,則git將自動遞歸地解引用標籤。

git merge-base --is-ancestor <ref_sha> <rem_sha> 

當這種返回0,則意味着rem_sharef_sha或其後代中的一個(等同於:ref_sharem_sha或其祖先)。

注意:我們不能簡單地在提取後檢查本地標籤,因爲可能存在尚未推送的本地標籤。

0

AFAIK沒有「遠程」標籤這樣的東西。也就是說,您不能區分只有本地的標籤和也可以存在於遠程的標籤。

相關問題