2013-01-09 39 views
0

如果我在git的同一個倉庫中有4個分支,並且我創建了一個標籤,那麼這個標籤對於所有分支還是隻存在於單個分支上?在GitHub中,它表示每個分支上都有一個1.0.0標記,並且我無法在命令行上的任何其他分支上創建另一個1.0.0標記,因爲它「已經存在」。標籤是否一次保留所有分支的狀態?在Git中標記,它是如何工作的?

回答

4

git,一個輕量級的標籤是一個簡單的唯一的名稱指向一個特定提交

git也具有tag對象的概念,它允許您輸入消息,並可能使用GPG對其進行簽名。然而,在這一天結束時,這些仍然只是指向一個具體的承諾。

輕量級標記幾乎與分支相同,除非它不是被設計爲可以更改的,而分支會前進和頻繁更改。


輕量級標記只是.git/refs/tags/目錄中的文件。它的內容是一個提交ID。

[[email protected] MyProject]$ cat .git/refs/tags/Version-4.9.2 
77035b7a66427662f1096444eeb319ba9ab1080b 
+0

那麼標籤是作爲整個回購還是特定分支的快照? –

+0

在git中,每個提交都是整個回購的快照。每個分支和標籤只是指向一個提交。所以是的,這是一個快照。 – gahooa

+1

把git想象成一個「快照管理系統」,能夠查看和管理快照之間的差異。在引擎蓋下,git有'blob','trees'和'commitits'。 blob保存文件內容。樹是特定的斑點和其他樹木的簡單列表。提交是一個註釋,日期,作者和指向特定樹對象的指針(反過來,指向其他blob和樹對象)。這樣一來,commit就是當時整個repo狀態的真實快照。 – gahooa

相關問題