惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园_首页
M
MIT News - Artificial intelligence
月光博客
月光博客
WordPress大学
WordPress大学
Google DeepMind News
Google DeepMind News
Y
Y Combinator Blog
The Cloudflare Blog
D
Docker
阮一峰的网络日志
阮一峰的网络日志
L
LangChain Blog
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
Vercel News
Vercel News
MyScale Blog
MyScale Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Martin Fowler
Martin Fowler
U
Unit 42
Stack Overflow Blog
Stack Overflow Blog
A
About on SuperTechFans
The Register - Security
The Register - Security
B
Blog
Recorded Future
Recorded Future
J
Java Code Geeks
Recent Announcements
Recent Announcements
Microsoft Security Blog
Microsoft Security Blog
H
Help Net Security
F
Fortinet All Blogs
B
Blog RSS Feed
Project Zero
Project Zero
The Hacker News
The Hacker News
T
Threatpost
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 热门话题
Jina AI
Jina AI
宝玉的分享
宝玉的分享
云风的 BLOG
云风的 BLOG
AWS News Blog
AWS News Blog
G
Google Developers Blog
GbyAI
GbyAI
S
Securelist
T
Tenable Blog
博客园 - 【当耐特】
Security Latest
Security Latest
人人都是产品经理
人人都是产品经理
T
Tor Project blog
Latest news
Latest news
P
Proofpoint News Feed
T
The Blog of Author Tim Ferriss

博客园 - xiashengwang

Rocky Linux 9 安装docker Rocky Linux 9 与Centos区别,以及软件安装dnf命令 《Linux 基础点滴》:(17)SSH 密钥生成与管理 – 免密登录的利器 Linux服务器安全登录:从入门到实践 putty 基础 《Linux 基础点滴》:(16)firewalld 防火墙管理命令 《Linux 基础点滴》:(15)用户管理 – 创建、删除、权限与 sudo 《Linux 基础点滴》:(14)定时任务 – 用 crontab 自动化 《Linux 基础点滴》:(13)文本编辑入门 – 使用 Vim 《Linux 基础点滴》:(12)tldr – 简化版命令手册 《Linux 基础点滴》:(11)系统信息与资源监控 – 掌握服务器状态 《Linux 基础点滴》:(10)压缩与打包 – tar 的艺术 《Linux 基础点滴》:(9)查找与过滤 – find, grep, 管道 《Linux 基础点滴》:(8)网络基础 – 查看 IP、连通性与端口 《Linux 基础点滴》:(7)进程管理 – 查看与控制运行中的程序 《Linux 基础点滴》:(6)文件权限与所有者 – 保护你的文件 《Linux 基础点滴》:(5)文件与目录操作 – 增删改查必会命令 《Linux 基础点滴》:(4)磁盘空间查看 – df 和 du 的妙用 《Linux 基础点滴》:(3)Linux 文件系统概览 – 一切皆文件 《Linux 基础点滴》:(2)SSH 连接与基础命令 – 从登录到第一次操作 《Linux 基础点滴》:(1)初识 Linux 大家族 – 发行版分类与选择 docker学习(7)-docker compose 文件 docker学习(11)- 容器的日志(log) docker学习(10)-利用Github Action 自动化部署 docker学习(9)-Docker Swarm + Nginx 跨机器负载均衡 docker学习(8)-从 Windows 开发到 Linux 部署 docker学习(6)-数据持久化与网络通信 docker学习(5)-Dockerfile docker学习(4)-Docker常用命令 docker学习(3)-一个简单的例子 docker学习(2)-安装 docker学习(1)-基本概念 Github 使用 Self-hosted Runner 实现服务器自动化部署 github创建分支 + Pull Request 合并 Git Rebase vs Git Merge:深入理解与实战选择 Git 系统学习教程:从零到团队协作 AI学习笔记(2)-OpenClaw安装 windbg分析dmp文件 docker desktop 和 Vmware冲突的解决办法
学会 Git Tag,让版本管理不再混乱
xiashengwang · 2026-04-16 · via 博客园 - xiashengwang

2026-04-16 11:27  xiashengwang  阅读(29)  评论()    收藏  举报

Git Tag 标签使用

一、Tag 是什么?有什么作用?

Tag(标签)是 Git 中用来为某个特定的提交打上永久标记的功能。它像一个书签,指向一个固定的快照。

主要作用

作用 说明
版本发布 每次上线一个新版本,打一个 tag(如 v1.0.0),方便后续回溯、对比、回滚。
里程碑记录 记录重要开发节点,如 beta-release、test-passed、deployed-to-prod。
长期保留参考点 即使分支被删除,tag 依然可以保留指向某个提交的锚点。
CI/CD 触发 很多 CI 系统支持在推送 tag 时自动触发发布流程。

Tag vs Branch

特性 Tag Branch
可变性 不可变,固定指向某个提交 可变,随新提交移动
用途 标记“快照”,用于历史回溯 持续开发新功能、修复 bug
生命周期 永久存在(除非手动删除) 可创建、合并、删除

二、准备工作

我们使用之前创建的 git-rollback-practice 仓库,如果没有,请按以下命令快速重建:

cd ~/Desktop
mkdir git-rollback-practice
cd git-rollback-practice
git init

# 创建初始文件并提交
echo "Version 1" > app.txt
git add app.txt
git commit -m "v1: initial app.txt"

echo "Version 2" >> app.txt
git commit -am "v2: add version 2 line"

echo "Version 3" >> app.txt
git commit -am "v3: add version 3 line"

# 查看提交历史
git log --oneline

确保有三个提交,记下最新的 commit ID(例如 3333333)。

三、Tag 核心操作实战

3.1 创建轻量标签(Lightweight Tag)

轻量标签只是一个指向特定提交的引用,不含额外信息。

git tag v1.0.0-lightweight

3.2 创建附注标签(Annotated Tag)—— 推荐

附注标签包含打标签人、日期、说明等信息,存储在 Git 对象库中。

git tag -a v1.0.0 -m "Release version 1.0.0: initial stable release"
  • -a:表示附注标签
  • -m:标签说明

3.3 给历史提交打标签

假设你发现 v0.9.0 应该对应第一次提交(1111111):

git tag -a v0.9.0 1111111 -m "Beta version based on first commit"

3.4 查看所有标签

git tag

输出示例:

v0.9.0
v1.0.0
v1.0.0-lightweight

3.5 查看某个标签的详细信息

git show v1.0.0

会显示标签的元数据以及对应的提交差异。

3.6 推送标签到远程仓库

如果这个仓库已经关联了远程 GitHub 仓库(假设已配置),可以推送:

# 推送单个标签
git push origin v1.0.0

# 推送所有本地标签
git push origin --tags

3.7 删除标签

删除本地标签:

git tag -d v1.0.0-lightweight

删除远程标签:

git push origin --delete v1.0.0-lightweight

或者使用简化语法:

git push origin :refs/tags/v1.0.0-lightweight

3.8 检出标签(查看历史代码)

当你想查看某个版本发布时的代码状态:

git checkout v1.0.0

此时会进入 "分离头指针" 状态(detached HEAD),意味着你不在任何分支上,修改后如果直接提交会丢失。不要在分离头指针状态下开发。

如果想基于某个标签修复 bug,应该创建新分支:

git checkout -b hotfix-from-v1.0.0 v1.0.0

现在你就在 hotfix-from-v1.0.0 分支上,可以基于 v1.0.0 的代码进行修改。

3.9 回到最新分支

git checkout main

四、实战演练:模拟版本发布流程

步骤 1:完成功能开发,准备发布 v1.0.0

# 假设当前在 main 分支,所有功能已完成
git tag -a v1.0.0 -m "Release version 1.0.0"
git push origin v1.0.0

步骤 2:继续开发新功能,提交 v1.1.0

echo "Version 4" >> app.txt
git commit -am "feat: add version 4 line"
git tag -a v1.1.0 -m "Release version 1.1.0 with new feature"
git push origin v1.1.0

步骤 3:发现 v1.0.0 有紧急 bug,需要基于该版本创建修复分支

git checkout -b hotfix-1.0.0 v1.0.0
echo "Critical fix" >> app.txt
git commit -am "hotfix: fix critical bug in v1.0.0"
git tag -a v1.0.1 -m "Hotfix release 1.0.1"
git push origin v1.0.1

步骤 4:将 hotfix 合并回 main

git checkout main
git merge hotfix-1.0.0
git push origin main

步骤 5:查看所有标签及历史

git tag -l
git log --oneline --decorate

你会看到提交旁边显示了标签名称。