1. 程式人生 > >Git 學習筆記 - 18 - 標籤管理

Git 學習筆記 - 18 - 標籤管理

Git 學習筆記 - 18 - 標籤管理

注:本文參照的是廖雪峰老師的Git教程

標籤的概念:

釋出一個版本時,我們通常先在版本庫中打一個標籤(tag),這樣,就唯一確定了打標籤時刻的版本。將來無論什麼時候,取某個標籤的版本,就是把那個打標籤的時刻的歷史版本取出來。所以,標籤也是版本庫的一個快照。
Git的標籤雖然是版本庫的快照,但其實它就是指向某個commit的指標(跟分支很像對不對?但是分支可以移動,標籤不能移動),所以,建立和刪除標籤都是瞬間完成的。
Git有commit,為什麼還要引入tag?

“請把上週一的那個版本打包釋出,commit號是6a5819e...”
“一串亂七八糟的數字不好找!”

如果換一個辦法:
“請把上週一的那個版本打包釋出,版本號是v1.2”
“好的,按照tag v1.2查詢commit就行!”

所以,tag就是一個讓人容易記住的有意義的名字,它跟某個commit綁在一起。

建立標籤:

1. 建立標籤

在Git中打標籤非常簡單,首先,切換到需要打標籤的分支上:(比如說master分支)

git checkout master

然後,敲命令git tag <name>就可以打一個新標籤:

git tag v1.0

2.檢視標籤

可以用命令git tag檢視所有標籤:

git tag

預設標籤是打在最新提交的commit上的。有時候,如果忘了打標籤,比如,現在已經是週五了,但應該在週一打的標籤沒有打,怎麼辦?

方法是找到歷史提交的commit id,然後打上就可以了:

3. 在歷史提交中打上標籤

檢視歷史的提交命令:

git log --pretty=oneline --abbrev-commit

比方說要對add merge這次提交打標籤,它對應的commit id是a61205a,敲入命令:

git tag v0.9 a61205a

再用命令git tag檢視標籤就可以看到剛剛打好的標籤;

注意,標籤不是按時間順序列出,而是按字母排序的。

可以用git show <tagname>檢視標籤資訊:可以看到,v0.9確實打在add merge這次提交上。

4. 建立有說明的標籤

我們還可以建立帶有說明的標籤,用-a指定標籤名,-m指定說明文字:

$ git tag -a v0.1 -m "version 0.1 released" 94063a9

用命令git show <tagname>可以看到說明文字:

注意:標籤總是和某個commit掛鉤。如果這個commit既出現在master分支,又出現在dev分支,那麼在這兩個分支上都可以看到這個標籤。

建立標籤

操作標籤:

  1. 如果標籤打錯了,也可以刪除:刪除本地標籤

    命令:

    git tag -d v0.1
    

    因為建立的標籤都只儲存在本地,不會自動推送到遠端。所以,打錯的標籤可以在本地安全刪除。

  2. 推送遠端標籤:

    如果要推送某個標籤到遠端,使用命令git push origin <tagname>

    或者,一次性推送全部尚未推送到遠端的本地標籤:

    git push origin --tags
    
    1. 如果標籤已經推送到遠端,要刪除遠端標籤就麻煩一點,

      1. 先從本地刪除:

        git tag -d v0.9
        
      2. 然後,從遠端刪除。刪除命令也是push,但是格式如下:

      git push origin :refs/tags/v0.9
      

要看看是否真的從遠端庫刪除了標籤,可以登陸GitHub檢視。

總結:

  • 命令git tag <tagname>用於新建一個標籤,預設為HEAD,也可以指定一個commit id;
  • 命令git tag -a <tagname> -m "blablabla..."可以指定標籤資訊;
  • 命令git tag可以檢視所有標籤。
  • 命令git push origin <tagname>可以推送一個本地標籤;
  • 命令git push origin --tags可以推送全部未推送過的本地標籤;
  • 命令git tag -d <tagname>可以刪除一個本地標籤;
  • 命令git push origin :refs/tags/<tagname>可以刪除一個遠端標籤。