天天看點

[Git]Git指南一 檢視建立删除标簽

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/SunnyYoona/article/details/76070245

1. 檢視标簽 http://gitlab.corp.qunar.com/jifeng.si/learningnotes/blob/master/IT/Git/%5BGit%5DGit%E6%8C%87%E5%8D%97%E4%B8%80%20%E6%A0%87%E7%AD%BE.md#1

列出現有标簽,使用如下指令:

xiaosi@yoona:~/code/learningnotes$ git tag
r-000000-000000-cm.cm
v1.0.0
v1.0.1

           

我們可以用特定的搜尋模式列出符合條件的标簽。如果隻對1.0系列的版本感興趣,可以運作如下指令:

xiaosi@yoona:~/code/learningnotes$ git tag -l 'v1.0.*'
v1.0.0
v1.0.1
           

2. 建立标簽 http://gitlab.corp.qunar.com/jifeng.si/learningnotes/blob/master/IT/Git/%5BGit%5DGit%E6%8C%87%E5%8D%97%E4%B8%80%20%E6%A0%87%E7%AD%BE.md#2

Git 使用的标簽有兩種類型:輕量級的(lightweight)和含附注的(annotated)。

  • 輕量級标簽就像是個不會變化的分支,實際上它就是個指向特定送出對象的引用。
  • 含附注标簽,實際上是存儲在倉庫中的一個獨立對象,它有自身的校驗和資訊,包含着标簽的名字,電子郵件位址和日期,以及标簽說明,标簽本身也允許使用 GNU Privacy Guard (GPG) 來簽署或驗證。

一般我們都建議使用含附注型的标簽,以便保留相關資訊;當然,如果隻是臨時性加注标簽,或者不需要旁注額外資訊,用輕量級标簽也沒問題。

2.1 含附注的标簽 http://gitlab.corp.qunar.com/jifeng.si/learningnotes/blob/master/IT/Git/%5BGit%5DGit%E6%8C%87%E5%8D%97%E4%B8%80%20%E6%A0%87%E7%AD%BE.md#2-1

使用如下指令建立一個含附注類型标簽:

xiaosi@yoona:~/code/learningnotes$ git tag -a v1.0.2 -m "version 1.0.2"
xiaosi@yoona:~/code/learningnotes$ git tag
r-000000-000000-cm.cm
v1.0.0
v1.0.1
v1.0.2
           

備注

  • -a (取 

    annotated

     的首字母)指定标簽名字
  • -m 選項指定了對應的标簽說明,Git 會将此說明一同儲存在标簽對象中。如果沒有給出該選項,Git 會啟動文本編輯軟體供你輸入标簽說明。

可以使用 

git show

 指令檢視相應标簽的版本資訊,并連同顯示打标簽時的送出對象:

xiaosi@yoona:~/code/learningnotes$ git show v1.0.2
tag v1.0.2
Tagger: yoona <[email protected]>
Date:   Tue Jul 25 14:14:26 2017 +0800

version 1.0.2

commit 2274f5e988b9300d9103a6be230d19ee945ff575
Author: jifeng.si <[email protected]>
Date:   Tue Jul 25 13:39:29 2017 +0800

    MOD
    ...
           

2.2 輕量級标簽 http://gitlab.corp.qunar.com/jifeng.si/learningnotes/blob/master/IT/Git/%5BGit%5DGit%E6%8C%87%E5%8D%97%E4%B8%80%20%E6%A0%87%E7%AD%BE.md#2-2

輕量級标簽實際上就是一個儲存着對應送出對象的校驗和資訊的檔案。要建立這樣的标簽,

-a

-s

 或 

-m

 選項都不用,直接給出标簽名字即可:

xiaosi@yoona:~/code/learningnotes$ git tag v1.0.3
xiaosi@yoona:~/code/learningnotes$ git tag
r-000000-000000-cm.cm
v1.0.0
v1.0.1
v1.0.2
v1.0.3
           

現在運作 

git show

 檢視此标簽資訊,就隻有相應的送出對象摘要:

xiaosi@yoona:~/code/learningnotes$ git show v1.0.3
commit 2274f5e988b9300d9103a6be230d19ee945ff575
Author: jifeng.si <[email protected]>
Date:   Tue Jul 25 13:39:29 2017 +0800

    MOD
    ...
           

3. 分享标簽 http://gitlab.corp.qunar.com/jifeng.si/learningnotes/blob/master/IT/Git/%5BGit%5DGit%E6%8C%87%E5%8D%97%E4%B8%80%20%E6%A0%87%E7%AD%BE.md#3

預設情況下,git push 并不會把标簽傳送到遠端伺服器上,隻有通過顯式指令才能分享标簽到遠端倉庫。其指令格式如同推送分支,運作 

git push origin [tagname]

 即可:

xiaosi@yoona:~/code/learningnotes$ git push origin v1.0.0
對象計數中: 1, 完成.
寫入對象中: 100% (1/1), 162 bytes | 0 bytes/s, 完成.
Total 1 (delta 0), reused 0 (delta 0)
To [email protected]:yoona/learningnotes.git
 * [new tag]         v1.0.0 -> v1.0.0
           

如果要一次推送所有本地新增的标簽上去,可以使用 --tags 選項:

xiaosi@yoona:~/code/learningnotes$ git push origin --tags
對象計數中: 3, 完成.
Delta compression using up to 4 threads.
壓縮對象中: 100% (3/3), 完成.
寫入對象中: 100% (3/3), 258 bytes | 0 bytes/s, 完成.
Total 3 (delta 2), reused 0 (delta 0)
To [email protected]:jifeng.si/learningnotes.git
 * [new tag]         v1.0.1 -> v1.0.1
 * [new tag]         v1.0.2 -> v1.0.2
 * [new tag]         v1.0.3 -> v1.0.3
           

4. 删除标簽 http://gitlab.corp.qunar.com/jifeng.si/learningnotes/blob/master/IT/Git/%5BGit%5DGit%E6%8C%87%E5%8D%97%E4%B8%80%20%E6%A0%87%E7%AD%BE.md#4

4.1 删除本地标簽 http://gitlab.corp.qunar.com/jifeng.si/learningnotes/blob/master/IT/Git/%5BGit%5DGit%E6%8C%87%E5%8D%97%E4%B8%80%20%E6%A0%87%E7%AD%BE.md#4-1

如果本地标簽打錯了,還沒有推送到伺服器端,也可以使用如下指令删除标簽:

xiaosi@yoona:~/code/learningnotes$ git tag -d v1.0.4
已删除 tag 'v1.0.4'(曾為 2274f5e)
           

因為建立的标簽都隻存儲在本地,不會自動推送到遠端。是以,打錯的标簽可以在本地安全删除。

4.2 删除遠端标簽 http://gitlab.corp.qunar.com/jifeng.si/learningnotes/blob/master/IT/Git/%5BGit%5DGit%E6%8C%87%E5%8D%97%E4%B8%80%20%E6%A0%87%E7%AD%BE.md#4-2

如果标簽已經推送到遠端,要删除遠端标簽就麻煩一點,先從本地删除:

xiaosi@yoona:~/code/learningnotes$ git tag -d v1.0.0
已删除 tag 'v1.0.0'(曾為 ddecd72)
           

然後再從遠端删除:

4.2.1 在Git v1.7.0版本之後如下操作 http://gitlab.corp.qunar.com/jifeng.si/learningnotes/blob/master/IT/Git/%5BGit%5DGit%E6%8C%87%E5%8D%97%E4%B8%80%20%E6%A0%87%E7%AD%BE.md#4-2-1-git-v1-7-0
xiaosi@yoona:~/code/learningnotes$ git push origin --delete v1.0.0
To [email protected]:jifeng.si/learningnotes.git
 - [deleted]         v1.0.0
           
4.2.2 在Git v1.7.0版本之前如下操作 http://gitlab.corp.qunar.com/jifeng.si/learningnotes/blob/master/IT/Git/%5BGit%5DGit%E6%8C%87%E5%8D%97%E4%B8%80%20%E6%A0%87%E7%AD%BE.md#4-2-2-git-v1-7-0
xiaosi@yoona:~/code/learningnotes$ git push origin :refs/tags/v1.0.0
To [email protected]:jifeng.si/learningnotes.git
 - [deleted]         v1.0.0
           

參考:

https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%89%93%E6%A0%87%E7%AD%BE