2012-05-02 45 views

回答

5

所有的git提交都會得到一個類似於你所粘貼的密碼安全的sha1標籤。如果你正在尋找一個特定的提交標籤,你應該使用git標籤並用你選擇的任何標籤來標記提交。

git tag "Release 1.0" 1f42f25b0e 

因爲GIT中是分佈式的,沒有辦法爲它使用,而不必與彼此進行通信的所有分佈同步提交號(如SVN)。此外,還需要足夠長的字符串以數學方式確保提交名稱的唯一性。這就是爲什麼sha1被用作提交的唯一名稱的原因,但您可以通過頂部的標籤進行標記。

+0

你能詳細說明如何使用標籤來實現嗎?我對git/source控件很陌生。 –

+1

編輯我的答案包括。作爲一個經驗法則,我發現git的幫助文檔非常棒。如果有疑問,git - 幫助通常正是我所需要的。 –

0

你可以使用git-tag來做到這一點。

git tag yourTag1.0 ed851a...<-The second param is the commit hash you want to tag

要見你可以做以下

git log --decorate

你可能會得到類似下面

commit ed851a7107f457935b0c6f75c4458116024a37e2 (HEAD, tag: myTag1.8, master) 
Author: Jerry test <[email protected]> 
Date: Wed May 2 16:47:11 2012 -0400 

    testing 
+0

這個問題是你必須標記任何你想識別爲「發佈」的東西。如果你的模型更多的是「持續釋放」(比如在承諾回購的代碼中應該始終是值得釋放的),這並不理想。 – KeithS

+1

@KeithS,在連續發佈的模型中,事物是否相互平衡,不是嗎?如果您標記了某些內容,並且事實證明該內容已損壞,則可以在修復問題後重新提交另一個提交。您只需移動標籤即可。 –

0

由於Git的版本ID標籤是十六進制,你可以將其轉換爲十進制數(您的示例將解析出235880548024015),然後將其模數化爲一個bu您可以在ver.sub.rev.build版本控制方案中使用該編號。然而,正如Ben所說,這是一個SHA1散列;因此它受到「雪崩效應」的影響,對輸入的小改變會對輸出產生巨大變化。因此,修訂版本生成的內部版本號將不會按順序排列。

4

如前所述,使用Git無法使'漂亮'版本號增加。如果您需要DVCS,請轉至Mercurial。但是,請注意,Mercurial遞增修訂只是本地便利表示法。

至於git,它不會影響您的版本編號方案。您可以創建自己的版本號方案,希望理智,並相應地提交標記。當你已經達到了1.0版本,例如,標籤的承諾:

$ git tag -a v1.0 

這將帶註釋的標籤適用於您的分支的電流HEAD。除非你知道你在做什麼,否則你應該總是使用帶註釋的標籤來達到這個目的。

這將創建標籤,現在git describe會告訴你:

$ git describe 
v1.0 

現在,事情變得有趣的是,如果你犯別的東西,不再指着標籤。然後,git describe仍然是有用的:

$ git describe 
v1.0-1-g9f52f48 

現在,git describe會給你一個獨特的友好標識符中間標籤之間的承諾。上面的符號表示最近的標記,超出它的提交數量以及正在描述的實際提交的短散列。

因此,使用git describe和帶註釋的標記是一種總是爲git提供唯一版本號的簡單方法,類似於使用subversion版本作爲構建標識符。