在 Git 中,tag 是指定 Git 历史中某一个节点的引用,一般用于发布版本,比如 v1.0.1。
Tag 有两种:
- 注释 Tag(Annotated Tags),这种 Tag 会包含大量的元数据,一般发布公开版本就会使用注释 Tag。
- 轻量 Tag(Lightweight Tags),只会包含名字和 commit 节点,一般是私有的,用于快速创建一个 tag,方便内部使用。
创建标签
git tag <tagname>
- 创建注释 Tag:
git tag -a v1.4
- 创建轻量 Tag:
git tag v1.4-lw
展示所有 Tag
git tag
示例输出:
v0.10.0
v0.10.0-rc1
v0.11.0
v0.11.0-rc1
v0.11.1
v0.11.2
v0.12.0
v0.12.0-rc1
v0.12.1
v0.12.2
v0.13.0
v0.13.0-rc1
v0.13.0-rc2
可以传递一个匹配符:
git tag -l *-rc*
示例输出:
v0.10.0-rc1
v0.11.0-rc1
v0.12.0-rc1
v0.13.0-rc1
v0.13.0-rc2
v0.14.0-rc1
v0.9.0-rc1
v15.0.0-rc.1
v15.0.0-rc.2
v15.4.0-rc.3
给任意的节点打 Tag
创建 Tag 时,默认会在当前节点打上 Tag(也就是当前 HEAD
指向的 commit 节点),我们在创建 Tag 时指定 commit 节点:
git tag -a v1.2 15027957951b64cf874c3557a0f3547bd83b3ff6
修改 Tag
我们不能重复创建相同的 Tag,不然会报错:
fatal: tag 'v0.4' already exists
可以传入 -f
(Force)去强制修改 Tag:
git tag -a -f v1.4 15027957951b64cf874c3557a0f3547bd83b3ff6
提交 Tag
默认来说,git push
不会把 Tag 推送上去,我们需要手动推送 tag:
git push origin v1.4
多个 tag 的话需要使用 --tags
,当推送上去后,其他用户 pull
后就能看到新的 Tag l。
切换 Tag
git checkout v1.4
切换到 Tag 后,对代码做的任何改变都不算到任何分支上,这些改变会算在一个单独分离的 commit,并且只能通过 commit 的 SHA 值去访问。因此,最好还是使用分支去修改代码。
删除 Tag
传入 -d
去删除 Tag
git tag -d v1