外观
10 · 标签发布与版本
标签是贴在某个 commit 上的名字,用来标记发布点(v1.2.0)。分支会往前走,附注标签应视为不可变的发布记录。
两种标签
| 类型 | 创建 | 内容 | 推荐 |
|---|---|---|---|
| 轻量标签 lightweight | git tag v1.2.0 | 只是一个名字 → commit | 本地临时标记 |
| 附注标签 annotated | git tag -a v1.2.0 -m "..." | 对象:打标签的人、时间、说明 | 发布用这个 |
git tag
作用: 创建、列出、删除本地标签。
改动范围: 本地引用。不自动出现在远程。
典型场景: 发版;给当前或历史某次提交打版本号;看某个版本对应哪次提交。
常用写法:
bash
git tag -l
git tag -l "v1.*"
git tag -a v1.2.0 -m "release 1.2.0"
git tag -a v1.2.0 -m "release 1.2.0" a1b2c3d # 给历史提交打
git show v1.2.0
git switch --detach v1.2.0 # 参观该版本,游离 HEAD推送(标签默认不跟 git push 走):
bash
git push origin v1.2.0
git push origin --tags # 一次推所有本地标签,谨慎删除:
bash
git tag -d v1.2.0
git push origin --delete v1.2.0
# 旧写法:git push origin :refs/tags/v1.2.0不要这样用:
- 在已发布、别人已经 checkout 的
v1.2.0上删掉再打到另一个 commit。下载过旧标签的人不会自动更新。 push --tags把本地实验标签全部送上远程。
做错了怎么办:
- 本地打错、未 push:
git tag -d v1.2.0,再打一次。 - 已 push:先和团队说一声,删除远程标签再推新的。无法保证所有克隆都更新,必要时改用
v1.2.1。 - 在标签上提交了(detached):见 急救手册 · detached HEAD。
发版最小流程
bash
git switch main
git pull --ff-only
git tag -a v1.2.0 -m "release 1.2.0"
git push origin v1.2.0CI 通常监听 v* 标签来构建发布产物。标签一旦公开,把它当成不可变。
上一章:09 · 冲突 · 下一章:11 · 清理、维护与高级主题