# 标签
## 1. 创建 `git` 标签
>[success]git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象。建议使用附注标签。
~~~
# 创建轻量标签
$ git tag v0.1.2-light
# 创建附注标签
$ git tag -a v0.1.2 -m “0.1.2版本”
~~~
>创建轻量标签不需要传递参数,直接指定标签名称即可。
创建附注标签时,参数a即annotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。
## 2. 查看当前分支下的标签
~~~
git tag
~~~
## 3. 切换到标签
>[success]与切换分支命令相同
>
~~~
git checkout [tagname]
~~~
## 4. 查看标签信息
>[success]用git show命令可以查看标签的版本信息:
>
~~~
$ git show v0.1.2
~~~
## 5. 删除标签
>[success]误打或需要修改标签时,需要先将标签删除,再打新标签。
>
~~~
$ git tag -d v0.1.2 # 删除标签
~~~
>参数d即delete的缩写,意为删除其后指定的标签。
>
## 6 .删除远程标签
>[success]事实上Git 的推送和删除远程标签命令是相同的,删除操作实际上就是推送空的源标签refs:git push origin 标签名
~~~
git push origin refs/tags/源标签名:refs/tags/目的标签名
git push origin :refs/tags/标签名
~~~
## 7. 给指定的commit打标签
>[success]打标签不必要在head之上,也可在之前的版本上打,这需要你知道某个提交对象的校验和(通过git log获取)。
>
~~~
# 补打标签
$ git tag -a v0.1.1 9fbc3d0
~~~
## 8. 标签发布
>[success]通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作:
>
~~~
$ git push origin v0.1.2 # 将v0.1.2标签提交到git服务器
$ git push origin –tags # 将本地所有标签一次性提交到git服务器
~~~
## 9. 如果想看之前某个标签状态下的文件,可以这样操作
### 1. 查看当前分支下的标签
~~~
git tag
~~~
### 2. 切换到指定标签
~~~
git checkout v0.21
//此时会指向打v0.21标签时的代码状态,(但现在处于一个空的分支上)
~~~
### 3. 查看指定文件
~~~
cat test.txt //查看某个文件
~~~