


























2026-04-16 11:27 xiashengwang 阅读(29) 评论() 收藏 举报
Tag(标签)是 Git 中用来为某个特定的提交打上永久标记的功能。它像一个书签,指向一个固定的快照。
| 作用 | 说明 |
|---|---|
| 版本发布 | 每次上线一个新版本,打一个 tag(如 v1.0.0),方便后续回溯、对比、回滚。 |
| 里程碑记录 | 记录重要开发节点,如 beta-release、test-passed、deployed-to-prod。 |
| 长期保留参考点 | 即使分支被删除,tag 依然可以保留指向某个提交的锚点。 |
| CI/CD 触发 | 很多 CI 系统支持在推送 tag 时自动触发发布流程。 |
| 特性 | 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)。
轻量标签只是一个指向特定提交的引用,不含额外信息。
git tag v1.0.0-lightweight
附注标签包含打标签人、日期、说明等信息,存储在 Git 对象库中。
git tag -a v1.0.0 -m "Release version 1.0.0: initial stable release"
-a:表示附注标签-m:标签说明假设你发现 v0.9.0 应该对应第一次提交(1111111):
git tag -a v0.9.0 1111111 -m "Beta version based on first commit"
git tag
输出示例:
v0.9.0
v1.0.0
v1.0.0-lightweight
git show v1.0.0
会显示标签的元数据以及对应的提交差异。
如果这个仓库已经关联了远程 GitHub 仓库(假设已配置),可以推送:
# 推送单个标签
git push origin v1.0.0
# 推送所有本地标签
git push origin --tags
删除本地标签:
git tag -d v1.0.0-lightweight
删除远程标签:
git push origin --delete v1.0.0-lightweight
或者使用简化语法:
git push origin :refs/tags/v1.0.0-lightweight
当你想查看某个版本发布时的代码状态:
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 的代码进行修改。
git checkout main
# 假设当前在 main 分支,所有功能已完成
git tag -a v1.0.0 -m "Release version 1.0.0"
git push origin v1.0.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
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
git checkout main
git merge hotfix-1.0.0
git push origin main
git tag -l
git log --oneline --decorate
你会看到提交旁边显示了标签名称。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。