git標簽的管理與思考

git 標簽管理

git 如何打標簽呢?

標簽是什么?

標簽 相當于一個 版本管理的一個貼紙,隨時 可以通過標簽 切換到 這個版本的狀態 ,

有人可能有疑問 git commit 就可以知道 代碼的改動了, 為啥還需要標簽來管理呢?

首先 多人協作開發的時候,有很多commit 有時候會比較亂,而tag 一般完成了一個release, 并且測試通過后, 再去打個 標簽。 代表一次上線功能的小小的里程碑。

注意標簽 是不可以 像分支一樣 可以移動的.一旦打完標簽就意味著 這個版本確定下來, 如果發現了這個版本的bug ,要基于這個標簽 創建分支 進行修復,而不能直接在某個標簽進行修改代碼.

標簽和 commitID 的區別是什么呢?

標簽 本質來說 和commitID 沒有區別. 唯一的區別 標簽是一個可以人類可以閱讀的名稱. commitID 是一個hash 值, 一般不是那么容易記住.

可以通過標簽名稱 檢出分支, 當然也可以通過某個 commitID 檢出分支. 標簽的意義 就是針對某次commit 完成了一個產品相對完整的功能,或者優化, 或者準備好了一個即將可以發布的代碼版本, 我們需要記錄一下這個偉大的時刻, 僅此而已. 當然 你可以說, 我通過 commit 里面的message 也是 可以說明這個 重要的提交 git commit -m "release version" 當然是可以的,沒有問題. 如果每個人都能有commit 信息的規范做法,那么 tag的作用 就不那么大. 然而在真實開發體驗中, 很多commit message, 寫的相對沒有那么詳細, 比如: fix a bug , Update xxx file, optimize code ,refactor code 等等 這些commit message. 會讓代碼的維護者頭大,隨著時間的推移, 都不知道哪個是重要的事件,或者里程碑. 這個時候 我們就需要 里程碑一樣的東西, 就是對某個commitID 打標簽, 標志這次這次完成了一個大的功能. 或者一次大版本測試,準備發布. 這就是 tag 存在的意義.

我來演示一下根據 tag 檢出分支,以及根據 commitID 檢出分支
請添加圖片描述

# 通過 tag 檢出分支
git checkout -b b_2_0_tag  2.0.0  # 通過commitID 檢出分支
git checkout -b b_2_0  c1f2646

檢出結果如下: 我們可以清晰的看到,兩個分支 在同一個 commitID, 兩者完全一樣的.
請添加圖片描述

查看標簽

git tag 
[xxxx@xxxxx xxxxx]$ git tag 
db_sharding_v0.1
db_sharding_v0.2
v20191126
v20191127
v20191127.1
v20191203
v20200119
v20200204
v20200206

支持 匹配查看標簽

git tag  -l 'v2020*'
[ec2-user@10-181-160-142 history_retriever]$ git tag  -l 'v2020*'
v20200119
v20200204
v20200206

查看某一個標簽的詳情

git show 標簽名稱

git show v20200206

在這里插入圖片描述

打標簽 并且 推送到 遠程 共享標簽

git tag -a 標簽名稱 -m comment 信息 ,message 一些描述信息

一般打標簽都是針對當前的分支,最后一個提交

-a : 理解為 annotated 的首字符,表示 附注標簽
-m : 指定附注信息

git tag -a v20200206 -m  "穩定版,release version" # 推送到遠程 標簽(共享標簽)
git push origin v20200206

后期打標簽

假設已經完成了某個feature 已經提交了代碼,但是 忘記 打tag 了,可以通過 commit 進行打tag

# 查看提交歷史
git log --pretty=oneline# 一行顯示 commit 信息 
git log    --oneline
[xxxxx@xxxxxx xxxxxx]$ git log --pretty=oneline
5f3f449120676310a581df86c3a58144a1da045d Merged PR 12558: test query string
3b34e0dd65fff220812a4f1858e20e1a3326b497 ut 排除
8a3a0428e4276d160c7ab220ecbf05357c17dd53 1
1892ad9d0d585bc56cd06f3c398e4b52bd902fe3 test query string
25fbee19721013c685df903cfca20517dcfea357 test query string
d6cef413a0cde8c0233ed5ff13f259bc76b9c688 Merged PR 12546: ut - rank task
0f633ea5cc0ba357b2c0cead9a1cd280c5c33a8f ut - rank task

根據 commitID 來打標簽

git tag -a 標簽名稱 commitID

git tag -a v20200109.1  0f633ea

刪除 本地標簽

git tag -d 標簽名稱

git tag -d  v0.0.1

推送一個標簽

git tag -d 標簽名稱

git push origin v0.0.1

請添加圖片描述

推送本地所有的標簽到遠程倉庫

git push origin --tags

刪除遠程倉庫標簽

git push origin :refs/tags/標簽名

git push origin  :refs/tags/v0.0.1

請添加圖片描述

這個命令更加直觀

 git push origin --delete <tagname>

通過標簽檢出一個分支

根據 標簽 檢出一個分支 branch_version3

git checkout -b 分支名 標簽名

git checkout -b branch_version3  v3.0.0

參考鏈接

git-scm.com

git 標簽管理

分享快樂,留住感動. '2023-12-09 15:27:05' --frank

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210233.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210233.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210233.shtml

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

相關文章

從二分類到多分類:探索Logistic回歸到Softmax回歸的演進

隨著機器學習和深度學習的迅猛發展&#xff0c;我們需要越來越靈活和強大的模型來解決各種不同的問題。在分類問題中&#xff0c;Logistic回歸一直是一個常見而有效的工具&#xff0c;尤其是在二分類場景中。然而&#xff0c;隨著問題變得更加復雜&#xff0c;我們需要更先進的…

node筆記

文章目錄 一、Node.js基礎1. 認識Node.js01 nodejs的特性02 使用 Node.js 需要了解多少 JavaScript03 瀏覽器環境vs node環境 2. 開發環境搭建3. 模塊、包、commonJS02 CommonJS規范03 modules模塊化規范寫法 4. Npm&Yarn01 npm的使用02 全局安裝 nrm03 yarn使用 5. 內置模…

在idea中使用maven創建dynamic web project

1、先創建一個empty project 2、添加一個module , 核心是選擇maven archetype webapp, 這個是maven提供的創建web工程的模版。 3、添加完等自動安裝好即可 4、目錄可能不完整 右鍵src---->點擊New---->點擊Directory &#xff08;注意&#xff1a;這是筆者所缺失的結…

每日一道c語言

任務描述 題目描述:輸入10個互不相同的整數并保存在數組中&#xff0c;找到該最大元素并刪除它&#xff0c;輸出刪除后的數組 相關知識&#xff08;略&#xff09; 編程要求 請仔細閱讀右側代碼&#xff0c;結合相關知識&#xff0c;在Begin-End區域內進行代碼補充&#xf…

ooTD I 女兒是自己的,盡情打扮盡情可愛

分享女寶的時尚穿搭 奶乎乎的黃色也太好看了 超足充絨量&#xff0b;優質面料 柔軟蓬松上身體驗感超贊 怎么穿都好看系列 輕輕松松打造時尚造型&#xff01;&#xff01;

Linux 刪除文件名亂碼的文件

現象&#xff1a; 處理&#xff1a; 1.>ls -li 獲取文件對應的ID號 2.把刪除指定文件&#xff08;ID號 &#xff09;執行&#xff1a; find ./ -inum 268648910 -exec rm {} \;

詳解Keras3.0 Models API: Whole model saving loading

1、save方法 Model.save(filepath, overwriteTrue, **kwargs) 將模型另存為.keras文件 參數說明 filepath: 保存模型的路徑。必須以.keras結尾overwrite&#xff1a;布爾值&#xff0c;表示是否覆蓋已存在的文件。默認為 True&#xff0c;即覆蓋已存在的文件。save_format…

微信小程序_介紹

開發準備 注冊微信小程序 進入微信公眾平臺 點擊立即注冊&#xff0c;選擇小程序&#xff0c;前往注冊 完善個人/企業信息 獲取AppID 進入小程序頁面->開發->開發設置->AppID 下載微信開發者工具 微信官方下載下載微信開發者工具穩定版 創建項目 綁定AppID不使用…

用Rust刷LeetCode之27 移除元素

27. 移除元素 難度: 簡單 原描述: 新描述: func removeElement(nums []int, val int) int { for i : 0; i < len(nums); i { if nums[i] val { nums append(nums[:i], nums[i1:]...) i-- } } return len(nums)} Rust 版本 下面這種寫法編譯無法通過: pub fn remove_…

基于ssm平面設計課程在線學習平臺系統源碼和論文

idea 數據庫mysql5.7 數據庫鏈接工具&#xff1a;navcat,小海豚等 隨著信息化時代的到來&#xff0c;管理系統都趨向于智能化、系統化&#xff0c;平面設計課程在線學習平臺系統也不例外&#xff0c;但目前國內的市場仍都使用人工管理&#xff0c;市場規模越來越大&#xff0c;…

【ArcGIS微課1000例】0079:ArcGIS Earth根據經緯坐標生成點shapefile

本文以氣象臺站數據的生成為例,詳細介紹ArcGIS Earth中導入X、Y經緯度坐標,生成Shapefile點數據的流程。 文章目錄 一、氣象臺站分布二、添加經緯度坐標三、符號化設置四、另存為一、氣象臺站分布 根據氣象臺站的經緯度坐標,可以很方便的在各種GIS平臺上生成點,并保存為多…

智能優化算法應用:基于蜣螂算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于蜣螂算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于蜣螂算法無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.蜣螂算法4.實驗參數設定5.算法結果6.參考文獻7.MATLAB…

STM32基礎教程 p16 窗口看門狗(WWDG)

1 窗口看門狗工作原理 1.1 簡介 WWDG簡介 窗口看門狗通常被用來監測&#xff0c;由外部干擾或不可預見的邏輯條件造成的應用程序背離正常的運 行序列而產生的軟件故障。除非遞減計數器的值在T6位變成0前被刷新&#xff0c;看門狗電路在達到預置 的時間周期時&#xff0c;會產…

定位分析RCU stall問題

使用RCU_CPU_STALL_CPUTIME 在編譯內核時打開CONFIG_RCU_CPU_STALL_CPUTIMEy或者在啟動參數中增加 rcupdate.rcu_cpu_stall_cputime1, 這樣在發生RCU STALL告警時就會有下面附加信息: rcu: hardirqs softirqs csw/systemrcu: number: 624 45 …

聯合基于信息論的安全和隱蔽通信的框架

這個標題很帥 abstractintroductionsystem modelPROPOSED JOINT OPTIMIZATION OF ITS AND COVERT TRANSMISSION RATE信息論安全 (ITS)隱蔽通信需要(CC)Joint Information-Theoretic Secrecy and Covert Communication in the Presence of an Untrusted User and Warden 202…

ffmpeg編解碼——時間基(time base)概念

文章目錄 FFmpeg 編解碼——時間基&#xff08;Time Base&#xff09;概念1. 時間基&#xff08;Time Base&#xff09;概念1.1 定義與作用1.2 表現形式 2. 時間基在FFmpeg中的應用2.1 時間戳2.2 持續時間 3. 理解FFmpeg中的時間基轉換3.1 av_rescale_q 函數3.2 av_rescale_q_r…

Shell數組函數:數組——數組和循環(四)

使用數組統計&#xff0c;用戶shell的類型和數量 一、腳本編輯 [root192 ~]# vim shell.sh #!/bin/bash declare -A shells while read ii dotypeecho $ii | awk -F: {print $7}let shells[$type] done < /etc/passwdfor i in ${!shells[]} doecho "$i: ${shells[$i]…

多任務學習(Multi-Task Learning)和遷移學習(Transfer Learning)的詳細解釋以及區別(系列1)

文章目錄 前言一、多任務學習&#xff08;Multi-Task Learning&#xff09;是什么&#xff1f;二、多任務學習&#xff08;Multi-Task Learning&#xff09;對數據的要求三、遷移學習是什么&#xff1f;四&#xff0c;遷移學習對數據的要求五&#xff0c;多任務學習與遷移學習的…

DevOps - Spug 自動化運維平臺

關于Spug Spug&#xff1a;麻雀&#xff0c;麻雀雖小&#xff0c;五臟俱全。 Spug是面向中小型企業設計的輕量級無Agent的自動化運維平臺&#xff0c;整合了主機管理、主機批量執行、主機在線終端、文件在線上傳下載、應用發布部署、在線任務計劃、配置中心、監控、報警等一系…

利用jdbc對數據庫進行增刪改查

步驟/過程&#xff1a; 1&#xff0c;導入驅動包 2&#xff0c;加載驅動包 3&#xff0c;輸入信息&#xff0c;進行數據庫連接 4&#xff0c;創建 statement對象 5&#xff0c;執行sql語句 6&#xff0c;如果是查詢操作&#xff0c;利用ResultSet處理數據&#xf…