標籤管理~建立標籤、操作標籤(十五)
釋出一個版本時,我們通常先在版本庫中打一個標籤(tag),這樣,就唯一確定了打標籤時刻的版本。將來無論什麼時候,取某個標籤的版本,就是把那個打標籤的時刻的歷史版本取出來。所以,標籤也是版本庫的一個快照。
Git的標籤雖然是版本庫的快照,但其實它就是指向某個commit的指標(跟分支很像對不對?但是分支可以移動,標籤不能移動),所以,建立和刪除標籤都是瞬間完成的。過程如:標籤(tag) → commit 。
Git有commit,為什麼還要引入標籤(tag)? “請把上週一的那個版本打包釋出,commit號是6a5819e...”
“一串亂七八糟的數字不好找!” 如果換一個辦法: “請把上週一的那個版本打包釋出,版本號是v1.2” “好的,按照tag v1.2查詢commit就行!” 所以,tag就是一個讓人容易記住的有意義的名字,它跟某個commit綁在一起。
標籤的意思是:
“我要找commit id是892b892a3f7...的那個版本”
“一串亂七八糟的數字怎麼找?”
“我要找的commit id是打了tag “v1.1”的那個版本”
“找到了:git show v1.1”
標籤就是跟某個 commit 版本號 關聯起來,便於釋出和查詢 ;
建立標籤
在Git中打標籤(tag)非常簡單,首先,切換到需要打標籤(tag)的分支上(如果說主分支master 需要打標籤,就切換到主分支master上),如下:
然後,輸入命令 git tag <name> 就可以打一個新標籤(tag),如下:
可以用命令 git tag 檢視所有標籤(tag),如下:
預設標籤(tag):是打在最新提交的 commit 上的。有時候,如果忘了打標籤(tag), 比如,現在已經是週五了,但應該在週一打的標籤(tag)沒有打,怎麼辦?方法:是找到歷史提交的 commit id ( 第五篇 git log
假如 說要對 add merge 這次提交打標籤(tag),它對應的 commit id (版本號) 是 f4047e5,輸入命令,如下:
再用命令 git tag 檢視標籤(tag),如下:
注意,標籤(tag)不是按時間順序列出,而是按字母排序的。可以用 git show <tagname> 檢視標籤(tag)資訊,如下:
可以看到, v0.9 確實打在 add merge 這次提交上。還可建立帶有說明的標籤(tag),用-a指定標籤(tag)名,-m指定說明文字, 以版本號 commit id 為 a0297d1 的 confilect fixed 為例,如下:
用命令 git show <tagname> 可以看到說明文字,如下:
注意:標籤總是和某個commit掛鉤。如果這個commit既出現在master分支,又出現在dev分支,那麼在這兩個分支上都可以看到這個標籤
綜上所述: 目前已有3個 commit 打了標籤(tag),如下:
分別是:
小結:
-
命令 git tag <tagname> 用於新建一個標籤,預設為HEAD,也可以指定一個 commit id(版本號) 來設定標籤(tag);
-
命令 git tag -a <tagname> -m "文字說明" commit id 表示可以指定標籤(tag)資訊;
-
命令 git tag 可以檢視所有標籤(tag)。
-
命令 git show <tagname> 檢視標籤(tag)資訊;
操作標籤
如果標籤(tag)打錯了,也可以刪除,如下:
因為建立的標籤(tag)都只儲存在本地,不會自動推送到遠端。所以,打錯的標籤(tag)可以在本地安全刪除。如果要推送某個標籤(tag)到遠端,使用命令 git push origin <tagname>,如下:
或者,一次性推送全部尚未推送到遠端的本地標籤(tag),如下:
如果標籤(tag)已經推送到遠端,要刪除遠端標籤(tag)就麻煩一點,先從本地刪除,如下: v0.9舉例
然後,從遠端刪除。刪除命令也是push,但是格式如下:( :refs/tags/<tagname> )
綜上所述:整個刪除過程:先從本地刪除標籤(tag)→然後再從遠端刪除標籤(tag)。
要看看是否真的從遠端庫刪除了標籤(tag),可以登陸GitHub網站檢視。
小結:
-
命令 git push origin <tagname> 可以推送某一個本地標籤(tag)到遠端;
-
命令 git push origin --tags 可以一次性推送全部未推送過的本地標籤(tag)到遠端;
-
命令 git tag -d <tagname> 可以刪除某一個本地標籤(tag);
-
命令 git push origin :refs/tags/<tagname> 可以刪除某一個遠端標籤(tag);
如果標籤(tag)已推送到遠端,需要刪除遠端標籤(tag)則執行3,4步驟;
轉自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000