NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
## 2.6 打标签 Git 可以给历史中的某一个提交打上标签,以示重要,比如用来标记发布结点,即版本号。 ### 2.6.1 列出标签 {#451-查看标签} 如果想要查看仓库中的标签信息,可以使用 `tag` 命令列出所有标签: ``` $ git tag ``` 并且可以配合搜索模式列出符合条件的标签: ``` $ git tag -l 'v1.4.2.*' ``` 以及查看指定标签信息: ``` $ git show [tag] ``` ### 2.6.2 创建标签 Git 使用两种主要类型的标签:轻量标签(lightweight)与附注标签(annotated)。 * **轻量标签:**轻量标签只是一个特定提交的引用,就像一个不会改变的分支。 * **附注标签:**附注标签是存储在 Git 数据库中的一个完整对象。 可以被校验的;其中包含打标签者的名字、电子邮件地址、日期时间;还有一个标签信息;并且可以使用 GNU Privacy Guard (GPG)签名与验证。 **附注标签** 新建含附注的标签,只要附加`-a`选项: ``` $ git tag -a [tag] -m 'info' ``` `-m`选项指定了一条将会存储在标签中的信息,如果没有为附注标签指定一条信息,Git 会运行编辑器要求输入信息。 **轻量标签** 轻量标签本质上是将提交校验和存储到一个文件中 - 没有保存任何其他信息。 创建轻量标签,不需要使用`-a`、`-s`或`-m`选项,只需要提供标签名字: ``` $ git tag [tag] ``` **追加标签** Git 支持对过去的某个提交添加标签,只需在执行添加标签操作时指定提交的 `SHA-1` 即可: ``` $ git tag [tag] [SHA-1] $ git tag -a [tag] -m 'info [SHA-1] ``` ### 2.6.3 标签管理 **共享标签** 默认情况下,`git push` 命令不会传送标签到远程服务器上,所以在创建标签后需要显式地推送标签: ``` $ git push [remote] [tag] ``` 如果想要一次性推送多个标签,可以使用 `--tags` 参数命令 Git 将所有不在远程库上的标签如数上传: ``` $ git push [remote] --tags ``` **删除标签** 如果想要删除指定标签需要指定参数 `-d`: ``` $ git tag -d [tag] ``` 而如果想要删除已经推送的远程标签,需要先在本地删除标签,然后通过命令推送到远程服务器: ``` $ git push [remote] :refs/tags/[tag] ``` **检出标签** 在 Git 中并不能真的检出一个标签,因标签不能像分支一样来回移动,所以如果需要使工作目录与仓库中某个标签版本一样,可以使用 `checkout` 命令创建一个新分支,Git 会在指定标签上新创建一个分支: ``` $ git checkout -b [branch] [tag] ```