一、什么是tag
tag是git版本庫的一個標記,指向某個commit的指針。
tag主要用於發布版本的管理,一個版本發布之后,我們可以為git打上 v.1.0.1 v.1.0.2 …這樣的標簽。
tag感覺跟branch有點相似,但是本質上和分工上是不同的:
tag 對應某次commit, 是一個點,是不可移動的。
branch 對應一系列commit,是很多點連成的一根線,有一個HEAD 指針,是可以依靠 HEAD 指針移動的。
所以,兩者的區別決定了使用方式,改動代碼用 branch ,不改動只查看用 tag。
tag 和 branch 的相互配合使用,有時候起到非常方便的效果,例如:已經發布了 v1.0 v2.0 v3.0 三個版本,這個時候,我突然想不改現有代碼的前提下,在 v2.0 的基礎上加個新功能,作為 v4.0 發布。就可以檢出 v2.0 的代碼作為一個 branch ,然后作為開發分支。
二、tag的簡單使用
1.創建tag:
創建 tag 是基於本地分支的 commit,而且與分支的推送是兩回事,就是說分支已經推送到遠程了,但是你的 tag 並沒有,如果把 tag 推送到遠程分支上,需要另外執行 tag 的推送命令。
git tag //創建本地tag
git push origin //推送到遠程倉庫
若存在很多未推送的本地標簽,你想一次全部推送的話:
git push origin --tags
以上是基於本地當前分支的最后的一個commit 創建的 tag ,但是如果不想以最后一個,只想以某一個特定的提交為tag ,也是可以的,只要你知道commit 的id。
git log --pretty=oneline //查看當前分支的提交歷史 里面包含 commit id
git tag -a
2.查看標簽
查看本地某個 tag 的詳細信息:
git show
查看本地所有 tag:
git tag 或者 git tag -l
查看遠程所有 tag:
git ls-remote --tags origin
3.刪除標簽
本地 tag 的刪除:
git tag -d
遠程 tag 的刪除:
git push origin :
4.檢出標簽
git checkout -b
因為 tag 本身指向的就是一個 commit,所以和根據commit id 檢出分支是一個道理。
但是需要特別說明的是,如果我們想要修改 tag檢出代碼分支,那么雖然分支中的代碼改變了,但是 tag標記的 commit還是同一個,標記的代碼是不會變的,這個要格外的注意。
其它
命令git tag -a -m “XXX…” 可以指定標簽信息。
命令git tag -a v0.1.0 -m “release 0.1.0 version” 創建附注標簽。
命令git checkout [tagname] 切換標簽。