Git 學習筆記 - 18 - 標籤管理
阿新 • • 發佈:2019-01-13
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分支,那麼在這兩個分支上都可以看到這個標籤。
操作標籤:
-
如果標籤打錯了,也可以刪除:刪除本地標籤
命令:
git tag -d v0.1
因為建立的標籤都只儲存在本地,不會自動推送到遠端。所以,打錯的標籤可以在本地安全刪除。
-
推送遠端標籤:
如果要推送某個標籤到遠端,使用命令
git push origin <tagname>
:或者,一次性推送全部尚未推送到遠端的本地標籤:
git push origin --tags
-
如果標籤已經推送到遠端,要刪除遠端標籤就麻煩一點,
-
先從本地刪除:
git tag -d v0.9
-
然後,從遠端刪除。刪除命令也是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>
可以刪除一個遠端標籤。