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

相关推荐
叫我少年17 小时前
Windows 中安装 git
git
深海鱼在掘金6 天前
Git 完全指南 —— 第1章:Git 概览与版本控制演进
git
通信小呆呆7 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick7 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee7 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn867 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e7 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨7 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
cqbzcsq7 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
noravinsc7 天前
关于Git Flow
git