# 打标签
给仓库历史的某一个提交打上标签,以示重要。比较有代表性的是人们会使用这个功能来标记发布结点(v1.0、v2.0 等等)
# 列出标签
// 以字母顺序列出标签
git tag
// 以特定模式查找标签
// -l 或 -list 选项按照通配符列出标签
git tag -l v1.*
# 创建标签
git 支持两种标签:轻量标签与附注标签
轻量标签很像一个不会改变的分支 - 它只是某个特定提交的引用
附注标签是存储在 git 数据库中的一个完整对象,它们是可以被校验的,其中包含打标签的名字等
# 附注标签
// -m 选项制定了一条存储在标签中的信息
git tag -a v1.4 -m "my version 1.4"
// git show 可以看到标签信息与之对应的提交信息
git show
输出显示了打标签者的信息、打标签的日期时间、附注信息,然后显示具体的提交信息。
# 轻量标签
git tag v1.4
# 后期打标签
// 要在那个提交上打标签,你需要在命令的末尾指定提交的校验和(或部分校验和)
git tag -a v1.2 9fceb02
# 共享标签
默认情况下,git push 不会传送标签到远程服务器上。在创建完标签后你必须显示地推送标签到共享服务器上。这个过程就像共享远程分支一样–你可以运行 git push origin
如果一次要推送很多标签,也可以时可用带有 --tags 选项的 git push 命令。这将会把所有不在远程服务器上的标签全部传送到哪里
git push origin --tags
这样,其他人从仓库克隆或者拉取,就能得到你那些标签
注意: git push
# 删除标签
git tag -d <tagname>
上述命令不会从任何远程仓库中删除这个标签
删除远程标签:
第一种方式:(更高效)
git push
例如:
git push origin :refs/tags/v1.4-lw
第二种方式:
git push origin --delete
# 检出标签
查看某个标签所指向的文件版本,可以使用 git checkout 命令。该命令会使你的仓库处于 “分离头指针(detached HEAD)” 的状态 — 有些不好的副作用
git checkout 2.0.0
在 “分离头指针” 状态下,如果你做了某些更改然后提交它们,标签不会发生变化, 但你的新提交将不属于任何分支,并且将无法访问,除非通过确切的提交哈希才能访问。 因此,如果你需要进行更改,比如你要修复旧版本中的错误,那么通常需要创建一个新分支:
$ git checkout -b version2 v2.0.0
Switched to a new branch 'version2'
如果在这之后又进行了一次提交,version2 分支就会因为这个改动向前移动, 此时它就会和 v2.0.0 标签稍微有些不同,这时就要当心了。
# 列出所有 tag
git tag // 默认显示
git tag -l
git tag -n // 查看所有 tag 和说明
git tag -l v1.* // 查看匹配到的 tag
git ls-remote --tags origin // 查看远程所有 tag
# 查看 tag 信息
git show v1.0.1 // 查看 v1.0.1 的内容
# 创建 tag
git tag v2.0
git push origin // 远程 tag 的创建
# 创建带注释的 tag
git tag -a v2.1 -m ‘第二版本’ //-m 后面跟着的是注释信息,当使用 git show v2.0 的时候,会显示这个注释信息
# 推送 tag
git push origin [tagname] // 推送到远程仓库
git push origin --tags // 推送所有 tag 到远程仓库
# 特定 commit_id 创建 tag
git tag -a v3.1 [commitID] // 为之前的历史提交添加 tag
# 删除 tag
git tag -d // 方式一
git tag -d [tagname] // 方式二
git push origin :refs/tags/v2.0 // 方式一:远程 tag 的删除
git push origin --delete// 方式二:远程 tag 的删除
# 重命名 tag
// 方式一:强制替换,再删除原有
git tag -f
git tag -d// 方式二:删除原有 tag,重新添加
git tag -d
git tag -a-m ‘information’