当前位置: 首页 > news >正文

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系列详细介绍和操作

 

相关文章:

  • 23年以后版本pycharm找不到conda可执行文件解决办法
  • 使用 ResponseBodyEmitter 实现异步响应式数据流处理
  • 工程化与框架系列(24)--跨平台解决方案
  • 3.8【Q】cv
  • AWS 如何导入内部SSL 证书
  • VsCode导入时选择相对路径
  • 伊藤积分(Ito Integral):随机世界中的积分魔法
  • Windows下配置Conda环境路径
  • C语言中内存布局(内存模型)是怎样的?
  • 一周热点-OpenAI 推出了 GPT-4.5,这可能是其最后一个非推理模型
  • 仿真新能源充电桩管理系统
  • Linux16-数据库、HTML
  • 人工智能(AI)与 生命体智能的本质差异
  • Office/WPS接入DeepSeek等多个AI工具,开启办公新模式!
  • 【Raspberry Pi 5 测评】无显示器上手指南
  • .NET Core全屏截图,C#全屏截图
  • Windows 如何开启和使用FTP服务
  • 从零开始训练小型语言模型之minimind
  • cannon g3810打印机设置
  • Python自学指南:从入门到进阶(第一天)
  • 网站推广效益怎么分析/百家号关键词排名优化
  • 河北集团网站建设/seo和sem的区别与联系
  • b站入口2023已更新/可以访问违规网站的浏览器
  • 武安企业做网站推广/北京百度搜索优化
  • 淄博高端网站建设/网站优化网站优化
  • 筑巢做网站怎么样/一级造价工程师