【Git学习】如何用好标签(git tag)
Git 打 tag 的方式主要有两种:轻量标签和附注标签。以下是详细说明:
1. 查看现有标签
bash
# 查看所有标签(按字母排序)
git tag
# 查看匹配模式的标签
git tag -l "v1.*"
# 查看标签详情
git show <tag名>
2. 创建标签
轻量标签(Lightweight Tag)
只是一个指向特定提交的引用:
bash
git tag v1.0.0
附注标签(Annotated Tag)
存储完整的标签信息(推荐):
bash
git tag -a v1.0.0 -m "版本 1.0.0 发布"
对历史提交打标签
bash
# 先查看提交历史
git log --oneline
# 对指定提交打标签
git tag -a v0.9.0 <commit-hash> -m "描述信息"
3. 推送标签到远程
推送单个标签
bash
git push origin v1.0.0
推送所有本地标签
bash
git push origin --tags
4. 删除标签
删除本地标签
bash
git tag -d v1.0.0
删除远程标签
bash
# 方法1:先删本地再推送删除
git tag -d v1.0.0
git push origin :refs/tags/v1.0.0
# 方法2:直接推送删除(Git v1.7.0+)
git push origin --delete v1.0.0
5. 常用选项
bash
# 列出标签并显示信息
git tag -n
# 创建带签名的标签(需要 GPG 配置)
git tag -s v1.0.0 -m "签名标签"
# 验证签名标签
git tag -v v1.0.0
6. 最佳实践建议
-
使用语义化版本号(SemVer):
v1.2.3 -
推荐使用附注标签,便于记录版本信息
-
发布版本时立即打标签
-
保持标签与发布内容一致
示例工作流
bash
# 开发完成后准备发布
git add .
git commit -m "准备发布 v1.1.0"
# 打标签
git tag -a v1.1.0 -m "Release version 1.1.0
- 新增功能 X
- 修复 Bug Y"
# 推送到远程
git push origin main
git push origin v1.1.0
如果需要查看特定标签的代码,可以使用:
bash
git checkout v1.0.0
直接 git push 会推送tag到远程吗
不会。普通的 git push 命令默认不会推送标签到远程仓库。
详细说明
默认行为
bash
# 这只会推送分支,不会推送标签
git push
验证示例
bash
# 1. 本地创建标签
git tag -a v1.0.0 -m "测试标签"
# 2. 只推送分支
git push origin main
# 3. 检查远程标签(会发现 v1.0.0 不存在)
git ls-remote --tags origin
推送标签的专用命令
推送所有本地标签
bash
git push --tags
# 或
git push origin --tags
推送单个标签
bash
git push origin v1.0.0
配置自动推送标签
如果你希望每次 git push 时自动推送标签:
全局配置
bash
# 设置所有仓库自动推送标签
git config --global push.followTags true
单个仓库配置
bash
# 在当前仓库设置
git config push.followTags true
配置后,当你推送分支时,相关的标签也会被推送:
bash
# 配置后,这会同时推送分支和相关的标签
git push origin main
注意事项
-
--follow-tags只会推送与推送提交关联的标签 -
旧标签或与其他提交关联的标签仍然需要手动推送
-
建议使用明确的标签推送命令,避免意外推送不需要的标签
安全建议
bash
# 推送前先查看本地标签
git tag
# 选择性推送需要的标签
git push origin v1.0.0 v1.1.0
# 而不是推送所有标签(可能包含未完成的标签)
git push --tags
所以记住:标签需要显式推送,除非你配置了自动推送。

浙公网安备 33010602011771号