【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 版本的基础,又能安全地记录修改,避免因分离头指针导致的提交丢失风险。

相关推荐
HyperAI超神经24 分钟前
具身智能资源汇总:机器人学习数据集,在线体验世界建模模型,英伟达/字节/小米等最新研究论文
人工智能·深度学习·学习·机器学习·机器人·ai编程·图形生成
AI-小柒1 小时前
从零入门大语言模型(LLM):系统学习路线与实践指南
大数据·开发语言·人工智能·学习·信息可视化·语言模型·自然语言处理
咋吃都不胖lyh1 小时前
GBDT 中的前向分布算法和贪婪学习
学习·算法
LUCIFER1 小时前
学习随笔:摄像头采集数据后进行视频编解码的常见概念与疑问
学习·音视频
LXY_BUAA2 小时前
《C++学习》Qt软件安装_20260123
学习
阿凡达蘑菇灯2 小时前
git安装--gitlab操作
git·gitlab
Mo_YuO.o2 小时前
工作区 暂存区 版本库
git·gitee·github
深念Y3 小时前
本地Git仓库推送到Gitee教程
git·gitee·github·仓库·项目·源代码管理·初始化
觉醒大王3 小时前
医学好投的普刊分享
前端·论文阅读·深度学习·学习·自然语言处理·学习方法
白云千载尽3 小时前
a800上gazebo无法使用gpu的问题修复
网络·git·github