1. 程式人生 > >標籤管理~建立標籤、操作標籤(十五)

標籤管理~建立標籤、操作標籤(十五)

釋出一個版本時,我們通常先在版本庫中打一個標籤(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

)版本號,然後打上標籤(tag)就可以了,如下:

假如 說要對 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),如下:

分別是:

小結:

  1. 命令 git tag <tagname> 用於新建一個標籤,預設為HEAD,也可以指定一個 commit id(版本號) 來設定標籤(tag)

  2. 命令 git tag -a <tagname>  -m "文字說明" commit id 表示可以指定標籤(tag)資訊;

  3.  命令 git tag 可以檢視所有標籤(tag)

  4.  命令 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網站檢視。

小結:

  1. 命令 git push origin <tagname> 可以推送某一個本地標籤(tag)到遠端;

  2. 命令 git push origin --tags  可以一次性推送全部未推送過的本地標籤(tag)到遠端;

  3.  命令 git tag -d <tagname> 可以刪除某一個本地標籤(tag)

  4.  命令 git push origin :refs/tags/<tagname> 可以刪除某一個遠端標籤(tag)

如果標籤(tag)已推送到遠端,需要刪除遠端標籤(tag)則執行3,4步驟;


轉自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000