# 一、什么是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 <tagname> -m "XXX..."?`可以指定標簽信息。
命令git tag -a v0.1.0 -m "release 0.1.0 version"?創建附注標簽。
命令git checkout \[tagname\]?切換標簽。
參考鏈接:[https://blog.csdn.net/jdsjlzx/article/details/98654951](https://blog.csdn.net/jdsjlzx/article/details/98654951)