標籤
就像大多數的版本管理系統,Git具備在特定時間點加入標籤去註明其重要性的功能。一般而言,我們會使用這個功能去標記出發行版本(如V1.0等等)。這個小節中,你將會學到如何列出既有的標籤、建立新標籤以及各種不同標籤間的差異。
列出標籤
在Git中列出既有的標籤是非常簡單的。直接輸入git tag:
$ git tag
v0.1
v1.3這個指令將以字母順序列出標籤;所以這個順序並不代表其重要性。
你也可以用特定的字串規則去搜尋標籤。以Git本身的儲存庫為例,其中包含超過240個標籤。當你只對1.4.2感興趣時,你可以執行以下指令:
$ git tag -l 'v1.4.2.*'
v1.4.2.1
v1.4.2.2
v1.4.2.3
v1.4.2.4建立標簽
Git使用兩大類的標籤:輕量級(lightweight)和含附註(annotated)。輕量級標籤就像是沒有更動的分支,實際上它僅是指到特定commit的指標。然而,含附註的標籤則是實際存在Git資料庫上的完整物件。它具備檢查碼、e-mail和日期,也包含標籤訊息,並可以被GNU Privacy Guard (GPG)簽署和驗證。一般而言,我們都建議使用含附註的標籤以便保留相關訊息;但如果只是臨時加註標籤或不需要保留其他訊息,就是使用輕量級標籤的時機。
含附註的標籤
建立一個含附註的標籤很簡單。最容易的方法是加入-a到tag指令上:
而-m選項用來設定標籤訊息。如果你沒有設定該訊息,Git會啟動文字編輯器讓你輸入。
透過git show可看到指定標籤的資料與對應的commit。
在列出commit資訊前,我們可以看到這個標籤的設定者資訊,下標籤時間與附註訊息。
簽署標籤
假設你有私鑰(private key),你也可以用GPG簽署在標籤上。只要用-s取代-a:
再對這個標籤執行git show,你就能看到你的GPG簽章以經附在裡面:
稍後你會看到如何驗證已簽署的標籤。
輕量級的標簽
另一種則是輕量級的標簽。基本上就是只保存commit檢查碼的文件。要建立這樣的標籤,不必下任何選項,直接設定標籤名稱即可。
這樣一來,當執行git show查看這個標籤時,你不會看到其他標籤資訊,只會顯示對應的commit:
驗證標籤
想要驗證已簽署的標籤,需要使用git tag -v [tag-name]。這個指令透過GPG去驗證簽章。而且在你的keyring中需要有簽署者的公鑰才能進行驗證:
如果沒有簽署者的公鑰,則會看到下列訊息:
追加標籤
你也可以對過去的commit上加入標籤。假設你的commit歷史如下:
如果你之前忘了將"updated rakefile"這個commit加入v1.2標籤。仍然可在事後設定。要完成這個動作,你必須加入該次commit的檢查碼(或前幾碼即可)到以下指令:
你可以看到標籤已經補上:
分享標籤
在預設的情況下,git push指令並不會將標籤傳到遠端伺服器上。當建立新標籤後,你必須特別下指令才會將它推送到遠端儲存庫上。類似將分支推送到遠端的過程,透過git push origin [tagname]指令。
如果你有很多標籤需要一次推送上去,你也可以加入--tags選項到git push指令中。這將會傳送所有尚未在遠端伺服器上的標籤。
現在,當其他使用者clone或pull你的儲存庫時,他們也同時會取得所有你的標籤。
Last updated
Was this helpful?