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

相关推荐
fmk102336 分钟前
FastAPI + LangChain Agent 从零入门学习笔记
学习·langchain·fastapi
词元Max1 小时前
Java 转 AI Agent 开发学习路线(2026年3月最新版)
java·人工智能·学习
星幻元宇VR1 小时前
VR互动平台|开启沉浸式体验新方式
科技·学习·安全·vr·虚拟现实
打不了嗝 ᥬ᭄2 小时前
Git 原理与使用
git·gitee
qqacj2 小时前
Spring Security 官网文档学习
java·学习·spring
南無忘码至尊2 小时前
Unity学习90天 - 第 6 天 -学习物理 Material + 重力与阻力并实现弹跳球和冰面滑动效果
学习·unity·游戏引擎
小陈phd3 小时前
多模态大模型学习笔记(三十六)—— 扩散模型与可控生成:从AI涂鸦到精准作画的技术革命
人工智能·笔记·学习
Sss_Ass4 小时前
跟着老师不迷路系列---跟着李述铜老师学习汇编语言之基本汇编程序符号绑定语句
学习·嵌入式·汇编语言·李述铜·符号绑定语句
for_ever_love__4 小时前
UI 学习 Appearance 外观管理
学习·ui·ios·objective-c