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.pswp.cn/bicheng/72848.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72848.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72848.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開源項目介紹:Native-LLM-for-Android

項目地址&#xff1a;Native-LLM-for-Android 創作活動時間&#xff1a;2025年 支持在 Android 設備上運行大型語言模型 &#xff08;LLM&#xff09; &#xff0c;具體支持的模型包括&#xff1a; DeepSeek-R1-Distill-Qwen: 1.5B Qwen2.5-Instruct: 0.5B, 1.5B Qwen2/2.5VL:…

深入理解 Java 虛擬機內存區域

Java 虛擬機&#xff08;JVM&#xff09;是 Java 程序運行的核心環境&#xff0c;它通過內存管理為程序提供高效的執行支持。JVM 在運行時將內存劃分為多個區域&#xff0c;每個區域都有特定的作用和生命周期。本文將詳細介紹 JVM 的運行時數據區域及其功能&#xff0c;并探討與…

PDF轉JPG(并去除多余的白邊)

首先&#xff0c;手動下載一個軟件&#xff08;poppler for Windows&#xff09;&#xff0c;下載地址&#xff1a;https://github.com/oschwartz10612/poppler-windows/releases/tag/v24.08.0-0 否則會出現以下錯誤&#xff1a; PDFInfoNotInstalledError: Unable to get pag…

深入剖析MyBatis緩存機制:原理、源碼與實戰指南

引言 MyBatis作為一款優秀的ORM框架,其緩存機制能顯著提升數據庫查詢性能。但許多開發者僅停留在“知道有緩存”的層面,對其實現原理和細節知之甚少。本文將結合可運行的代碼示例和源碼分析,手把手帶您徹底掌握MyBatis緩存機制。 一、MyBatis緩存分類 MyBatis提供兩級緩存…

Vue 使用 vue-router 時,多級嵌套路由緩存問題處理

Vue 使用 vue-router 時&#xff0c;多級嵌套路由緩存問題處理 對于三級菜單&#xff08;或多級嵌套路由&#xff09;&#xff0c;vue 都是 通過 keep-alive 組件來實現路由組件的緩存。 有時候三級或者多級路由時&#xff0c;會出現失效情況。以下是三級菜單緩存的例子。 最…

QSplitter保存和讀取

官方文檔提供的方案 保存 connect(ui->splitter, &QSplitter::splitterMoved, [](){settings.setValue("splitterSizes", ui->splitter->saveState()); });讀取 ui->splitter->restoreState(settings.value("splitterSizes").toByteA…

VanillaVueSvelteReactSolidAngularPreact前端框架/庫的簡要介紹及其優勢

VanillaVueSvelteReactSolidAngularPreact前端框架/庫的簡要介紹及其優勢。以下是這些前端框架/庫的簡要介紹及其優勢&#xff1a; 1. Vanilla 定義&#xff1a;Vanilla 并不是一個框架&#xff0c;而是指 原生 JavaScript&#xff08;即不使用任何框架或庫&#xff09;。優勢…

Java多線程與高并發專題——關于CopyOnWrite 容器特點

引入 在 CopyOnWriteArrayList 出現之前&#xff0c;我們已經有了 ArrayList 和 LinkedList 作為 List 的數組和鏈表的實現&#xff0c;而且也有了線程安全的 Vector 和Collections.synchronizedList() 可以使用。 首先我們來看看Vector是如何實現線程安全的 &#xff0c;還是…

Jmeter接口測試詳解

今天筆者呢&#xff0c;想給大家聊聊Jmeter接口測試流程詳解&#xff0c;廢話不多說直接進入正題。 一、jmeter簡介 Jmeter是由Apache公司開發的java開源項目&#xff0c;所以想要使用它必須基于java環境才可以&#xff1b; Jmeter采用多線程&#xff0c;允許通過多個線程并…

DeepSeek開啟AI辦公新模式,WPS/Office集成DeepSeek-R1本地大模型!

從央視到地方媒體&#xff0c;已有多家媒體機構推出AI主播&#xff0c;最近杭州文化廣播電視集團的《杭州新聞聯播》節目&#xff0c;使用AI主持人進行新聞播報&#xff0c;且做到了0失誤率&#xff0c;可見AI正在逐漸取代部分行業和一些重復性的工作&#xff0c;這一現象引發很…

通過Golang的container/list實現LRU緩存算法

文章目錄 力扣&#xff1a;146. LRU 緩存主要結構 List 和 Element常用方法1. 初始化鏈表2. 插入元素3. 刪除元素4. 遍歷鏈表5. 獲取鏈表長度使用場景注意事項 源代碼閱讀 在 Go 語言中&#xff0c;container/list 包提供了一個雙向鏈表的實現。鏈表是一種常見的數據結構&#…

【大學生體質】智能 AI 旅游推薦平臺(Vue+SpringBoot3)-完整部署教程

智能 AI 旅游推薦平臺開源文檔 項目前端地址 ??項目介紹 智能 AI 旅游推薦平臺&#xff08;Intelligent AI Travel Recommendation Platform&#xff09;是一個利用 AI 模型和數據分析為用戶提供個性化旅游路線推薦、景點評分、旅游攻略分享等功能的綜合性系統。該系統融合…

【滲透測試】基于時間的盲注(Time-Based Blind SQL Injection)

發生ERROR日志告警 查看系統日志如下&#xff1a; java.lang.IllegalArgumentException: Illegal character in query at index 203: https://api.weixin.qq.com/sns/jscode2session?access_token90_Vap5zo5UTJS4jbuvneMkyS1LHwHAgrofaX8bnIfW8EHXA71IRZwsqzJam9bo1m3zRcSrb…

redis數據類型以及底層數據結構

redis數據類型以及底層數據結構 String&#xff1a;字符串類型&#xff0c;底層就是動態字符串&#xff0c;使用sds數據結構 Map:有兩種數據結構&#xff1a;1.壓縮列表&#xff1a;當hash結構中存儲的元素個數小于了512個。并且元 …

DeepSeek R1-32B醫療大模型的完整微調實戰分析(全碼版)

DeepSeek R1-32B微調實戰指南 ├── 1. 環境準備 │ ├── 1.1 硬件配置 │ │ ├─ 全參數微調:4*A100 80GB │ │ └─ LoRA微調:單卡24GB │ ├── 1.2 軟件依賴 │ │ ├─ PyTorch 2.1.2+CUDA │ │ └─ Unsloth/ColossalAI │ └── 1.3 模…

window下的docker內使用gpu

Windows 上使用 Docker GPU需要進行一系列的配置和步驟。這是因為 Docker 在 Windows 上的運行環境與 Linux 有所不同,需要借助 WSL 2(Windows Subsystem for Linux 2)和 NVIDIA Container Toolkit 來實現 GPU 的支持。以下是詳細的流程: 一、環境準備 1.系統要求 Window…

Ubuntu 下 nginx-1.24.0 源碼分析 - cycle->modules[i]->type

Nginx 中主要有以下幾種模塊類型 類型 含義 NGX_CORE_MODULE 核心模塊&#xff08;如進程管理、錯誤日志、配置解析&#xff09;。 NGX_EVENT_MODULE 事件模塊&#xff08;如 epoll、kqueue 等 IO 多路復用機制的實現&#xff09;。 NGX_HTTP_MODULE HTTP 模塊&#xf…

八、排序算法

一些簡單的排序算法 8.1 冒泡排序 void Bubble_sort(int a[] , int len){int i,j,flag,tmp;for(i=0 ; i < len-1 ; i++){flag = 1;for(j=0 ; j < len-1-i ; j++){if(a[j] > a[j+1]){tmp = a[j];a[j] = a[j+1];a[j+1] = tmp;flag = 0;}}if(flag == 1){break;}}…

Sqlserver安全篇之_手工創建TLS用到的pfx證書文件

Sqlserver官方提供的Windows Powershell腳本 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?viewsql-server-ver16 # Define parameters $certificateParams {Type "SSLServerAuthentication"Subje…

npm install -g @vue/cli 方式已經無法創建VUE3項目

采用該方式&#xff0c;啟動VUE3項目&#xff0c;運行命令&#xff0c;出現報錯&#xff1a; npm install -g vue/cli PS D:\> npm install -g vue/cli npm warn deprecated inflight1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lr…