發佈版本時,一般會先在版本庫中打一個標籤,這樣,就惟一肯定了打標籤時刻的版本。取出某個標籤的版本,就是把那個打標籤的時刻的歷史版本取出來。因此,標籤也是版本庫的一個快照。git
Git的標籤雖然是版本庫的快照,但其實它就是指向某個commit的指針(跟分支雷同,但分支能夠移動,標籤不可);建立和刪除標籤都是瞬間完成的。
github
本文具體說明 Git 中是如何建立標籤及操做標籤的。安全
Git 標籤的命令很簡單,首先簡單瀏覽下方的 Git 命令:學習
git tag 查看標籤 spa
git tag <tag name> <commit id> 建立標籤,若無commit id 默認當前
指針
git tag -a <tag name> -m <msg> 建立標籤,且添加標籤信息code
git show <tag name> 查看標籤具體信息blog
可作一些簡單的實踐操做,未建立過標籤直接用 git tag 顯示爲空; 排序
在master分支上建立一個 v1.0 的標籤,以後查看,以下開發
打標籤就是如此容易
默認標籤是打在最新提交的commit上的(當前分支快照)。有時候,若是忘了打標籤須要補打,須要找到歷史提交的commit id,而後打上就能夠了。
咱們來操做下其餘分支下打標籤,切換至dev分支(若無,可新建該分支),若在該分支下開發出 v1.1版本,須打v1.1標籤,可操做 git tag v1.1
再次查看標籤,可看到目前有兩個標籤了
切換至master分支,再次查看,可見 也有兩個標籤;標籤是記錄在整個Git庫的,分支並不影響。
咱們在master分支上 commit 兩次,並打當前分支爲 v2.0, 目前有三個標籤了
然而如今,突然想起以前有次commit須要打上 v1.2 的標籤,得補打標籤,那如何操做呢?得知道以前那次提交的commit id, git log 以下
得知 commitid , 取前7位便可 ffe7d78
注意,標籤不是按時間順序列出,而是按字母排序的。(v2.0標籤就是打在v1.2以前的)
注意,標籤不能重複打,若已存在,會提示 ,但容許同一commit id打多個標籤
查看標籤內容,如 git show v1.1 , 可見以下,可得知該標籤的commit id及與當前版本的差別
建立標籤時,可添加備註信息即如
可用 -s 表示用PGP簽名標籤,必須首先安裝gpg(GnuPG),若是沒有找到gpg,或者沒有gpg密鑰對,就會報錯;有關簽名方式請自行搜索研究。
git tag -s <tag name> -m <msg> 建立簽名標籤,且添加標籤信息
標籤如果打錯能夠直接刪除,命令以下:
git tag -d <tag name> -m <msg> 刪除標籤
如刪除 v1.2 標籤
建立的標籤都只存儲在本地,不會自動推送到遠程。因此,打錯的標籤能夠在本地安全刪除。有關遠程標籤詳見下文。
正如前文所言,本地的標籤不會推送到遠程。來看下遠程的標籤顯示,以下 github, 目前該庫無任何tags
若是要推送標籤到遠程,使用命令以下:
git push origin <tag name> 推送某個標籤至遠程
git push origin --tags 推送全部標籤至遠程
本地庫有三個標籤 , 可以使用單個標籤推送,以下:
推送後
所有推送
若是標籤已經推送到遠程,要刪除遠程標籤就麻煩一點,先從本地刪除;再從遠程刪除。刪除命令也是push,可是格式以下:
git push origin :refs/tags/<tagname> 刪除遠程標籤