Cao Yi

第十章 标签(Tag)

⇦上一章 - 首页🏠 - 下一章⇨



「标签」并非 Git 的主要和必须功能, 但善用标签,对项目也很有益处。项目发布的版本,我们一般用 tag 来标记,作为存档,并不再修改,比如

Branch 一般用作平常开发。Tag 能做的 branch 都能,但将发布用的版本存档以 tag 标记可使 branch 的功能更纯粹。

通过指令 git tag --help 可以查看官方参考文档。

1. 查看标签

(如果你在执行这些代码时的输出结果为空,请参考2. 创建标签制作一些标签再来做本节的实验)

查看本地库的所有标签

$ git tag

or

$ git tag --list

它可以和 grep 指令结合去找包含某个字串的标签,如

$ git tag | grep v0.0

查看远程库的所有标签

$ git ls-remote --tags

这条指令如果不需要在本地库的目录里运行,可以添加上远程库的地址就行了,即

$ git ls-remote --tags {remote repo URL}

2. 创建标签

当前版本打上 v0.01 的标签:

$ git tag v0.01

上面是创建一个轻量标签,如果需要创建标注标签,用下面的方式:

$ git tag -a v0.01 -m "This is a demo to create an anotation tag"

有关轻量标签和标注标签的不同,可以参考本站的《Git 的两种 Tag 的平行对比实验》。

将标签推送到远程:

$ git push origin v0.01

这条指令和推送 branch 的,并无什么区别。但如果有同名的 branch 和 tag,就要用 tag 的全称才能推送成功,如:

$ git push origin refs/tags/v0.01

还可以加 --force 覆盖原先的同名标签

$ git push origin refs/tags/v0.01 --force

本地的 tag 不能直接覆盖,可以先把原先的 tag 删了,再重新创建。

一次性推送全部尚未推送到远程的本地标签:

$ git push origin --tags

3. 获取远程标签

可以在任意分支上执行下面的语句

$ git fetch --all

它的本意是获取远程的所有变化,自然也将 tag 获取了。

4. 删除标签

删除本地的标签

$ git tag --delete v0.01

--delete 可以简作 -d

删除远程 tag:

$ git push origin --delete v0.01

如果 tag 和 branch 有重名,删除指令需要使用完整的 tag 名:

$ git push origin --delete refs/tags/v0.01

可以一次删除多个标签:

$ git push origin --delete v0.01 v0.02 v0.03

5. 使用标签点的代码

如果要使用标签点的代码,可以用 switchcheckout 完成。

$ git switch v0.03 -c v003
Switched to a new branch 'v003'

$ git checkout v0.02 -b v002
Switched to a new branch 'v002'

⇦上一章 - 首页🏠 - 下一章⇨