【Git学习】Git的tag标签

在 Git 中,tag(标签)是用于标记仓库历史中特定提交的快照,通常用于标识版本发布,方便后续快速回溯到某个稳定版本。与分支不同,标签是静态的,一旦创建不会随新提交自动移动,而分支是动态的,会跟随新提交更新。

需要注意的是标签不依赖于分支,它直接指向特定提交的静态指针,它的存在完全依赖于提交本身,而与任何分支都没有绑定关系,无论分支如何创建、删除、移动,只要标签指向的提交还在仓库中,标签就始终有效,这种设计确保了标签的独立性和持久性。

tag 本地标签管理

Git 中有两种常用标签类型

第一种是创建一个轻量级标签,在HEAD指针所指向的提交点(当前所在分支)创建标签 git tag v1.0.1

查看现有标签 git tag

创建一个带有附注的标签,git tag -a v1.0.2 -m 'release version'

-a表示附注标签,-m指定注释

删除本地标签 git tag -d v1.0.2

远程标签

git push 不会将本地标签推送到远程仓库,如下

需显式推送,推送标签到远程仓库 git push origin v1.0.1

点击下载,会将打包成zip文件,记录着某一时刻状态下的代码

test-git1-v1.0.1.zip 如下

把多个标签推送到远程 git push origin 标签1 标签2......

把所有标签推送到远程 git push origin --tag

查看远程标签列表 git ls-remote --tags origin

该仓库下另一个用户查看标签发现没有标签内容,因为 Git 默认不会自动拉取远程标签,需要通过特定命令显式拉取

标签拉取 git fetch origin v1.0.1 或 git pull

删除远程标签需要通过命令显式操作,标签默认不会自动同步删除

删除本地标签后,删除远程标签 git push origin :refs/tags/v1.0.3

将一个空引用 : 推送到远程仓库的标签路径 refs/tags/,从而删除该标签

远程标签被删除

另一种删除远程标签的方式,语法更直观

删除本地标签后,删除远程标签 git push origin --delete tag 标签1 标签2...

标签检出

在 Git 中标签检出(checking out a tag)指的是将工作区和暂存区的代码切换到标签所指向的那个特定提交的状态。简单说,就是让当前项目的代码恢复到该标签对应的版本快照。

检出本地仓库标签 git checkout v1.0.0

注意标签指向的是固定的提交而不是分支,因此,检出标签后Git 会进入分离头指针状态

这样存在一定的风险,在分离头指针状态下,你可以修改代码并提交,但这些新提交不会被任何分支指向,如果之后切换到其他分支,这些新提交可能会因为没有分支引用而被 Git 垃圾回收机制清理。

如果只是临时查看旧版本代码,分离头指针状态没问题

但如果需要基于标签 v1.0.1 的代码进行修改,正确的做法是:创建一个名为 dev2 的新分支,将这个分支的初始状态设置为标签 v1.0.1 所指向的提交,并且在创建的同时直接切换到 dev2 分支

git checkout -b dev2 v1.0.1

这样操作后,后续在 dev2 分支上的所有新提交都会被该分支跟踪,既保留了 v1.0.1 版本的基础,又能安全地记录修改,避免因分离头指针导致的提交丢失风险。

相关推荐
m0_564876842 小时前
卷积学习录
深度学习·学习·cnn
CoderJia程序员甲2 小时前
GitHub 热榜项目 - 日榜(2025-12-11)
git·ai·开源·llm·github
阿蒙Amon2 小时前
JavaScript学习笔记:2.基础语法与数据类型
javascript·笔记·学习
aoxiang_ywj2 小时前
git add 和git commit之后怎么撤销?
git
道19932 小时前
PyTorch 从小白到高级全阶段学习大纲(一)
人工智能·pytorch·学习
光影少年2 小时前
前端ai开发需要学习哪些东西?
前端·人工智能·学习
winner88813 小时前
告别“这个分支是干啥的?”:Git分支层级命名实战
git·git push -u·分支关联·层级分支命名
真上帝的左手3 小时前
3. 代码管理-Git实战
git
萘柰奈4 小时前
Unity学习--2D动画--[序列帧动画]2D序列帧动画
学习·unity·游戏引擎