2012-06-14 21 views
2

我們使用標籤版本的部署,當我執行命令:當我必須在git中使用解除引用時,爲什麼?

git ls-remote -t origin 

我可以看到這樣的畫面

d5a0a2513d71dd94522039d9844daf8b8eed531f refs/tags/live-0.0.1 
43a6228d4bf5839aa934b541c35d19b897b35056 refs/tags/live-0.0.1^{} 
a8662ef8bf021ea349dbf56970fd9f62f97093fb refs/tags/live-0.0.2 
b48d63ff5af0c9f488f99c2066824c8891ae394e refs/tags/live-0.0.3 

我不能在我的本地代表本次修訂d5a0a2513d71dd94522039d9844daf8b8eed531f找到。 請解釋一下,我們何時需要使用解除引用?也許有人有一個想法,爲什麼它在我的情況下完成?(也許它是由我完成的,但我不記得,也許是測試的東西)爲什麼我不能看到這個提交d5a0a2513d71dd94522039d9844daf8b8eed531f在當地代表?

+0

你在你的本地回購上有相同的標籤嗎? – CharlesB

+0

git tag -l live-0.0.1 live-0.0.2 live-0.0.3 –

+0

和它的提交是什麼? 'git show-ref live-0.0.1' – CharlesB

回答

2

在git中,SHA-1哈希用於標識所有對象,而不僅僅是提交。對象類型包括:

  • 樹木
  • 斑點
  • 承諾(修訂)
  • 標籤

並非所有的標籤都有自己的SHA-ID。有兩種類型的標籤:

  • 輕量級(無消息,他們更像是不能移動的一個分支)
  • 註釋(創建爲一個單獨的對象,因爲標籤信息必須在某個地方保存)

註釋標籤包含消息並提交SHA-ID,其被表示爲解引用的結果(43a6228你的情況),並且標識自己爲與ID的對象(d5a0a25),這是需要來檢索標籤消息。

因此,如果您正在查找提交標識符,則始終需要取消引用標籤。無論如何,任何標籤名稱本身總是一個有效的提交標識符。

+0

謝謝,爲了顯示註釋,我們可以使用命令'git tag -l -n1' –

相關問題