Git系列之git tag和ReleaseMilestone

以下是关于 Git Tag、Release 和 Milestone 的深度融合内容,并补充了关于 Git Tag 的所有命令、详细解释和指令实例,条理清晰,结合实际使用场景和案例。

1. Git Tag

1.1 定义

• Tag 是 Git 中用于标记特定提交(commit)的引用,通常用于标记版本发布点(如 v1.0.0)。

• 可以是轻量标签(lightweight tag)或附注标签(annotated tag)。

1.2 使用场景

• 标记版本发布点。

• 查看历史版本。

• 基于标签修复 Bug。

1.3 所有相关命令及详细解释

1.3.1 创建 Tag

• 轻量标签:

git tag <tag-name>


  ◦ 轻量标签只是一个指向特定提交的引用,不包含额外信息。

  ◦ 适用于临时标记或本地使用。

  ◦ 示例:

git tag v1.0.0


• 附注标签:

git tag -a <tag-name> -m "Tag message"


  ◦ 附注标签是一个完整的对象,包含标签名称、标签信息、签名和时间戳。

  ◦ 适用于正式版本发布。

  ◦ 示例:

git tag -a v1.0.0 -m "Release version 1.0.0"


• 对历史提交打 Tag:

git tag -a <tag-name> <commit-hash> -m "Tag message"


  ◦ 对历史提交打标签,适用于标记过去的提交。

  ◦ 示例:

git tag -a v1.0.0 abc1234 -m "Release version 1.0.0"


1.3.2 查看 Tag

• 列出所有 Tag:

git tag


  ◦ 列出所有本地标签。

  ◦ 示例:

git tag


• 查看 Tag 详细信息:

git show <tag-name>


  ◦ 查看标签的详细信息,包括标签信息和对应的提交内容。

  ◦ 示例:

git show v1.0.0


1.3.3 推送 Tag

• 推送单个 Tag:

git push origin <tag-name>


  ◦ 将指定标签推送到远程仓库。

  ◦ 示例:

git push origin v1.0.0


• 推送所有 Tag:

git push origin --tags


  ◦ 将所有本地标签推送到远程仓库。

  ◦ 示例:

git push origin --tags


1.3.4 删除 Tag

• 删除本地 Tag:

git tag -d <tag-name>


  ◦ 删除本地标签。

  ◦ 示例:

git tag -d v1.0.0


• 删除远程 Tag:

git push origin --delete <tag-name>


  ◦ 删除远程仓库中的标签。

  ◦ 示例:

git push origin --delete v1.0.0


1.3.5 检出 Tag

• 切换到标签对应的提交:

git checkout <tag-name>


  ◦ 切换到标签对应的提交。

  ◦ 注意:标签是一个不可变的快照,检出标签后会进入“分离头指针”状态。

  ◦ 示例:

git checkout v1.0.0


1.3.6 基于 Tag 创建分支

• 在标签基础上创建新分支:

git checkout -b <branch-name> <tag-name>


  ◦ 基于标签创建一个新的分支,方便在标签基础上继续开发。

  ◦ 示例:

git checkout -b hotfix-v1.0.0 v1.0.0


1.3.7 重命名 Tag

• 重命名标签:
Git 不支持直接重命名标签,可以通过以下步骤实现:

  1. 删除旧标签:

git tag -d <old-tag-name>


  2. 创建新标签:

git tag -a <new-tag-name> <commit-hash> -m "New tag message"


  3. 推送新标签:

git push origin <new-tag-name>


  ◦ 示例:

git tag -d v1.0.0
git tag -a v1.0.1 abc1234 -m "Renamed tag to v1.0.1"
git push origin v1.0.1


2. GitHub/GitLab Release

2.1 定义

• Release 是基于 Git tag 的高级功能,通常用于发布软件的正式版本。

• 除了包含 tag 信息外,还可以附加发布说明、二进制文件(如编译后的可执行文件)等。

2.2 使用场景

• 发布正式版本。

• 提供详细的发布说明。

• 分发二进制文件(如安装包、压缩包)。

2.3 创建 Release

在 GitHub 上创建 Release

1. 进入仓库的 Releases 页面。

2. 点击 Draft a new release。

3. 选择或创建一个 tag(如 v1.0.0)。

4. 填写标题和发布说明。

5. 上传二进制文件(如 .zip 或 .exe)。

6. 点击 Publish release。

使用 Git 命令行创建 Release

通过 GitHub API 创建 Release:

curl -X POST -H "Authorization: token YOUR_GITHUB_TOKEN" \
-d '{"tag_name": "v1.0.0", "name": "Release v1.0.0", "body": "Initial release", "draft": false, "prerelease": false}' \
https://api.github.com/repos/OWNER/REPO/releases


3. Milestone

3.1 定义

• Milestone 是项目管理中的功能,用于跟踪一组相关任务(issues 或 pull requests)的进度。

• 通常与项目的阶段性目标或版本发布相关联。

3.2 使用场景

• 规划版本发布的目标。

• 跟踪任务的完成进度。

• 管理阶段性目标。

3.3 创建 Milestone

在 GitHub 上创建 Milestone

1. 进入仓库的 Issues 页面。

2. 点击 Milestones。

3. 点击 New milestone。

4. 填写名称(如 v1.0.0 Release)、描述和截止日期。

5. 点击 Create milestone。

将 Issue 或 Pull Request 关联到 Milestone

• 在 Issue 或 PR 页面,选择 Milestone 并关联到目标 Milestone。

4. Tag、Release 和 Milestone 的区别

功能    Tag    Release    Milestone
定义    标记特定提交的引用    基于 Tag 的正式发布,包含附加信息    用于跟踪一组任务的阶段性目标
内容    提交的引用(轻量或附注)    Tag 信息、发布说明、二进制文件    任务列表、进度、截止日期
用途    标记版本点、查看历史版本    发布正式版本、分发二进制文件    规划版本目标、跟踪任务进度
关联性    与提交直接关联    基于 Tag,可能关联 Milestone    与 Issue 或 PR 关联
工具支持    Git 原生支持    GitHub/GitLab 提供支持    GitHub/GitLab 提供支持

5. 综合使用场景

场景:发布 v1.0.0 版本

1. 规划目标:

  • 创建 Milestone v1.0.0 Release,关联相关 Issues 和 PRs。

  • 设置截止日期,跟踪任务完成进度。

2. 开发与测试:

  • 完成所有关联的任务,确保代码通过测试。

3. 打 Tag:

  • 在最终提交上打 Tag:

git tag -a v1.0.0 -m "Release version 1.0.0"
git push origin v1.0.0


4. 创建 Release:

  • 在 GitHub 上基于 v1.0.0 创建 Release。

  • 填写发布说明,上传二进制文件(如安装包)。

5. 完成 Milestone:

  • 关闭所有关联的 Issues 和 PRs。

  • 标记 Milestone 为完成。

6. 总结

• Tag:用于标记提交,是版本管理的基础。

• Release:基于 Tag 的正式发布,包含附加信息和二进制文件。

• Milestone:用于规划版本目标和跟踪任务进度。

在实际项目中,这三者通常结合使用:

• 通过 Milestone 规划版本目标。

• 通过 Tag 标记版本点。

• 通过 Release 发布正式版本。

通过合理使用这些功能,可以更好地管理项目的版本历史和发布流程。


参考文章:

Git系列详细介绍和操作

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/30703.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLiteStudio:一款免费跨平台的SQLite管理工具

SQLiteStudio 是一款专门用于管理和操作 SQLite 数据库的免费工具。它提供直观的图形化界面&#xff0c;简化了数据库的创建、编辑、查询和维护&#xff0c;适合数据库开发者和数据分析师使用。 功能特性 SQLiteStudio 提供的主要功能包括&#xff1a; 免费开源&#xff0c;可…

VMware workstation 17安装过程详细指南

VMware 17安装过程详细指南 一、准备工作 在开始安装 VMware 之前&#xff0c;你需要确保你的计算机满足以下条件&#xff1a; 操作系统&#xff1a;VMware Workstation 支持多种 Windows 和 Linux 操作系统。确保你的操作系统版本在 VMware 支持的范围内。 硬件要求&#…

【从零开始学习计算机科学】计算机组成原理(六)异常事件处理

【从零开始学习计算机科学】计算机组成原理&#xff08;六&#xff09;异常事件处理 异常事件处理异常处理的数据通路异常事件入口地址 异常事件处理 异常和中断事件改变处理机正常指令的执行顺序。异常指令执行过程中&#xff0c;由于操作非法和指令非法引起的事件。陷阱指陷…

基于DeepSeek的智慧医药系统(源码+部署教程)

运行环境 智慧医药系统运行环境如下&#xff1a; 前端&#xff1a; HTMLCSS后端&#xff1a;Java AIGCDeepseekIDE工具&#xff1a;IDEA技术栈&#xff1a;Springboot HTMLCSS MySQL 主要角色 智慧医药系统主要分为两个角色。 游客 尚未进行注册和登录。具备登录注册、…

WinUI 3 支持的三种窗口 及 受限的窗口透明

我的目标 希望能够熟悉 WinUI 3 窗口的基本使用方式&#xff0c;了解可能出现的问题 。 WinUI 3 支持三种窗口模式&#xff0c;分别为&#xff1a;常规窗口模式、画中画模式、全屏模式。 窗口模式&#xff1a;常规 即我们最常见的普通窗口。 支持&#xff1a;显示最大化按钮…

《云原生监控体系构建实录:从Prometheus到Grafana的观测革命》

PrometheusGrafana部署配置 Prometheus安装 下载Prometheus服务端 Download | PrometheusAn open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.https://prometheus.io/…

VBA 数据库同一表的当前行与其他行的主键重复判断实现方案1

目的&#xff0c;判断是否主键重复&#xff0c;不重复则登录新数据&#xff0c;重复则不登录。 定义类型&#xff1a; DataRecord   tableName 表名   rowNumber 行号   columnName 列名   data 数据 想要实现的代码逻辑如下&#xff1a; 模拟数据库的登录过程。假设…

MySql的in和join对比谁更高效

公司有个SQl根据时间判断是否变化进而更新到主表通知下游服务告知变化 首先看下优化前和优化后的sql&#xff1a; 优化前&#xff1a;执行很慢 UPDATE vrs_video SET updated_at now() WHEREvrs_video.id IN (SELECT DISTINCTvideo_id FROMvrs_play_source WHEREvrs_play_…

用BGE Large ZH 1.5获取向量以及重排序构建生产环境可用restful API的Python代码讲解

开篇 嘿&#xff0c;各位小伙伴&#xff01;今天我们来聊一个超级有趣的话题&#xff1a;embedding向量化数据。听起来很高大上对不对&#xff1f;别担心&#xff0c;让我用最简单的方式告诉你这是啥。 想象一下&#xff0c;你有一大堆文字、图片或者其他数据&#xff0c;想要…

【OneAPI】网页截图API-V2

API简介 生成指定URL的网页截图或缩略图。 旧版本请参考&#xff1a;网页截图 V2版本新增全屏截图、带壳截图等功能&#xff0c;并修复了一些已知问题。 全屏截图&#xff1a; 支持全屏截图&#xff0c;通过设置fullscreentrue来支持全屏截图。全屏模式下&#xff0c;系统…

1个基于 Three.js 的 Vue3 组件库

大家好&#xff0c;我是大澈&#xff01;一个喜欢结交朋友、喜欢编程技术和科技前沿的老程序员&#x1f468;&#x1f3fb;‍&#x1f4bb;&#xff0c;关注我&#xff0c;科技未来或许我能帮到你&#xff01; Tres.js 是一个基于 Three.js 的 Vue 3 组件库&#xff0c;旨在简…

QT | 信号与槽(超详解)

前言 对qt信号和槽的详细解释 &#x1f493; 个人主页&#xff1a;普通young man-CSDN博客 ⏩ 文章专栏&#xff1a;C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&am…

用Deepseek写一个五子棋微信小程序

在当今快节奏的生活中&#xff0c;休闲小游戏成为了许多人放松心情的好选择。五子棋作为一款经典的策略游戏&#xff0c;不仅规则简单&#xff0c;还能锻炼思维。最近&#xff0c;我借助 DeepSeek 的帮助&#xff0c;开发了一款五子棋微信小程序。在这篇文章中&#xff0c;我将…

Qwen2.5-7B-Instruct进行自我认知微调

使用镜像&#xff1a; modelscope/ms-swift/swift_lora_qwen2:v1 数据集和模型下载&#xff1a; 数据集内容&#xff1a; 启动命令&#xff1a; CUDA_VISIBLE_DEVICES0 \ swift sft \ --model Qwen/Qwen2.5-7B-Instruct \ --train_type lora \ --dataset AI-Mod…

百问网提供的烧写工具将各镜像文件烧写到eMMC存储器的各脚本的解析

重要说明:本文的烧写目标存储器是eMMC存储器 百问网提供的烧写工具不仅可以把各镜像文件烧写到eMMC存储器&#xff0c;还可以烧写到NADN&#xff0c;SD卡等存储设备&#xff0c;如下图所示&#xff1a; 但是本文的烧写目标存储器是eMMC存储器&#xff0c;这点是前提&#xff…

android studio开发文档

android基本样式 1.文本 2.设置文本大小 3.字体颜色 背景 资源文件 xml’引用资源文件 4.视图宽高 5.间距 6.对齐方式 常用布局 1.linearLayout线性布局 2.相对布局 RelativeLayout 3.网格布局GridLayout 4.scrollview滚动视图 Button 点击事件与长按事件 长按 按钮禁用与…

Unity Dots

文章目录 什么是DotsDOTS的优势ECS&#xff08;实体组件系统&#xff09;Job System作业系统Burst编译器最后 什么是Dots DOTS&#xff08;Data-Oriented Technology Stack&#xff09;是Unity推出的一种用于开发高性能游戏和应用的数据导向技术栈&#xff0c;包含三大核心组件…

Flink-DataStreamAPI-执行模式

一、概览 DataStream API支持不同的运行时执行模式&#xff0c;我们可以根据用例的要求和作业的特征进行选择。 STREAMING执行模式&#xff1a;被称为“经典”执行模式为&#xff0c;主要用于需要持续增量处理并且预计无限期保持在线的无界作业BATCH执行模式&#xff1a;类似…

DeepSeek DeepEP学习(三)normal dispatch

上节介绍了normal kernel执行过程中会分成两部分&#xff0c;第一步通过notify_dispatch计算meta信息&#xff0c;然后本节介绍数据dispatch的过程。 notify_dispatch过程中会计算其他所有rank发送给当前rank多少token&#xff0c;写入到host的moe_recv_counter_mapped&#x…

mysql创建数据库和表

登录 MySQL 并选择数据库 登录 MySQL 命令行&#xff1a;mysql -u root -p 查看所有数据库&#xff1a;SHOW DATABASES; 创建数据库&#xff1a;CREATE DATABASE my_database; 查看数据库是否创建成功&#xff1a;SHOW DATABASES; 选择数据库&#xff1a;USE 你的数据库名…