Git打tag标签
Git代码管理中用得比较多的是与分支相关的,一般一个迭代会拉一个新的分支或者功能提测时拉取一个提测分支。
打tag一般用在版本定版的时候,对于分支相关的操作已经熟悉了,此文整理下git打标签相关的操作,并用Github项目演示下过程,以供参考。
1、如何打一个tag?
tag的作用是标记软件的版本,比如v1.0.0,v2.0这种,便于后续追溯、回滚或发布。
那么如何从一个分支去创建一个tag呢?
操作步骤:从 develop
分支定版并打 tag
假设我们当前在 develop
分支上完成开发,准备发布 v1.0.0
版本:
# 1. 切换到目标分支(预发布分支)
git checkout develop
# 2. 确保代码是最新的
git pull origin develop
# 3. 基于当前提交创建 tag
git tag v1.0.0
# 或者创建带注释的标签(推荐,信息更完整)
git tag -a v1.0.0 -m "v1.0.0"
# 4. 推送 tag 到远程 GitHub 仓库
git push origin v1.0.0
2、如何从已有tag拉取分支?
一般情况下,版本没有bug的话是不需要此操作的。但如果版本定版后发现bug,并且目前已经没有对应的分支,就需要从之前打的tag来拉取分支。
当已发布的版本(如 v1.0.0
)上线后发现紧急 Bug,但对应的开发分支已被删除或已有新功能合入,不适合热修复时,可以从该 tag 拉出一个修复分支(如 hotfix/v1.0.0
)
下面我们来看下具体怎么操作:
# 1. 获取远程所有 tag 信息(确保本地有最新标签)
git fetch --tags
# 2. 查看所有 tag,确认目标 tag 存在
git tag -l
# 3. 基于 tag 创建本地分支(注意:tag 是一个快照,不能直接提交,需先创建分支)
git checkout -b hotfix/v1.0.0 v1.0.0
# 4. (可选)推送到远程,供团队协作
git push origin hotfix/v1.0.0
git checkout -b <new-branch> <tag>
表示以 tag 指向的 commit 为起点创建新分支。
可以基于此分支修复 Bug,修复完成后:
合并回 develop
或 main,打新的 tag,如v1.0.1
3、分支与tag的关系?
相同点:
都是指向某个 commit 的指针。
都可用于标识代码状态。
核心区别:
特性 | 分支(Branch) | 标签(Tag) |
---|---|---|
用途 | 用于开发、功能隔离、协作 | 用于标记版本里程碑(如发布) |
可变性 | 动态的,会随着新提交向前移动 | 静态的,指向固定 commit,一般不修改 |
更新机制 | 每次提交,分支指针自动前移 | 创建后通常不再变动 |
是否可提交 | 可以在分支上继续提交 | 不能直接在 tag 上提交(需先切分支) |
形象比喻:
- 分支:像是一条不断延伸的“开发流水线”。
- tag:像是流水线上某个时刻的“快照”或“刻度标记”。
实际协作中的典型流程:
注意事项:
Tag 一旦推送到远程,不要轻易删除或修改,否则会影响团队协作和发布一致性。
如果需要修改已发布版本,应打新版本号(如
v1.0.1
),而不是修改v1.0.0
。
总结:
操作 | 命令示例 |
---|---|
创建轻量标签 | git tag v1.0.0 |
创建带注释标签 | git tag -a v1.0.0 -m "Release" |
推送单个 tag | git push origin v1.0.0 |
推送所有 tag | git push origin --tags |
从 tag 创建分支 | git checkout -b hotfix/v1.0.0 v1.0.0 |
删除本地 tag | git tag -d v1.0.0 |
删除远程 tag | git push origin --delete v1.0.0 |