一、概述:
與TFVC中標記(Label)一樣,Git的標簽(Tag)也是TFS系統的代碼管理中非常重要的一個版本管理工具。使用標簽,我們可以每個時間點的代碼注上一個通俗、並且容易記憶的名稱(例如標簽的名稱為V1.0,V2.0.0.0等),方便開發人員對代碼庫中的版本有一個直觀的了解。我們可以依照標簽,簽出任一時間點的代碼。下面我們結合TFS 2018和Visual Studio 2017來驗證如何實現Git的標簽功能。
二、創建標簽
可以通過Visual Studio、命令行,瀏覽器等多種渠道創建標簽。
1. 在VS 2017中創建標簽
在Visul Studio的團隊資源管理器中,打開Git代碼的歷史記錄,可以使用鼠標右鍵點擊任一提交,並以此為基礎新建一個標簽,例如下圖中我們為最新的代碼創建一個名稱為“V2.0”的標簽。
Figure – 在Git歷史記錄中新建標簽
Figure - 輸入標簽的名稱和說明文字,點擊“創建標記”
這樣,一個名稱為”V2.0“的標簽就已經創建在本地的代碼庫中了,你可以通過刷新Git歷史記錄查看到新建的標簽。當然,此時標簽還沒有同步到服務器上,我們在后面會說明如何發布標簽到服務器。
2. 在TFS Web Access中創建標簽
TFS系統是一個可是化程度非常高的服務器軟件,和微軟所有的其他產品一樣,為用戶帶來操作的便捷性。你可以使用瀏覽器,非常方便和快速的直接在服務器上創建一個標簽,操作方式如下圖:
Figure - 在TFS的Git代碼庫中,打開代碼庫的歷史記錄,右鍵點擊一個提交后,新建標記
Figure - 輸入標記的名稱和說明后,就點擊創建按鈕
3. 在命令行中創建標簽
在命令行中,使用“Git tag –a tagname –m “comment”可以快速創建一個標簽。需要注意,命令行創建的標簽只存在本地Git庫中,還需要使用Git push –tags指令發布到TFS服務器的Git庫中。
4. 為一個特定的提交創建標簽
上面的目錄都是基於最新的代碼(HEAD)創建標簽,實際上經常還需要在變更歷史記錄中,為之前提交的代碼創建標簽。
我們可以在標簽的名稱后面填寫提交編號既可以,例如git tag –a tagname commitID –m “comments”,如下圖:
5. 在命令行中修改標簽名稱
如果你發現上面創建的標簽名稱不合適,你也可以在命令行中使用-f參數復制一個新的標簽,再使用-d參數刪除原來的標簽,從而達到修改標簽的目的,如下圖:
二、標簽同步
1. 將本地標簽的標簽上傳的服務器
下面的命令將本地的所有標簽都提交到服務器上:
Git push –-tags
2. 提交單個標簽
下面的目錄,修改tagname以后,可以將指定的標簽提交到服務器中:
Git push origin tagname
4. 將TFS中創建的標簽同步到本地
Git pull
參考資料:
1. https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%89%93%E6%A0%87%E7%AD%BE
2. http://www.cnblogs.com/danzhang (微軟ALM MVP 張洪君)
三、刪除標簽
刪除本地標簽:git –d <tag name>
刪除遠程庫中的標簽git push orgin :V1.1
注意,標簽的操作需要區分大小寫,否則可能出錯。
你也可以使用瀏覽器在Web界面的可視化界面中,直接在TFS服務器上刪除標簽,如下圖:
四、按照標簽獲取代碼
git checkout tagName
五、標簽和分支的區別
標簽(tag)和分支(branch)是Git版本管理中經常容易混餚的概論,開發人員不太容易弄明白什么樣的場景中需要對應的功能。
從概論上來講:
- 標簽一個特定版本的名稱。標簽總是指向一個相同的對象,例如提交版本。標簽指向的版本是不會被改變的。
- 分支是代碼開發支線的名稱。新的提交按照時間線堆積在分支中,從而實現代碼庫的更新和軟件功能的變化。
從技術上來講:
- 標簽存儲在Git庫的/refs/tags目錄中。它指向一個特定的提交或標簽。
- 分支存儲在Git庫的/refs/heads中,它只能指向到提交對象。
從應用場景上來講:
- 標簽經常用來標記軟件版本的名稱。例如當我們發布軟件版本V1.0時,我們會在對應的分支中為當前最新的代碼創建一個名稱為“V1.0”的標簽。在一個分支中,隨着軟件發布工作的推進,通常存在許多的記錄了不同版本名稱的標簽。使用標簽,開發人員可以快速簽出需要的代碼,用來重新問題、調試缺陷。
- 分支通常在多個團隊、多條功能/需求同步開發的情況下使用。開發團隊基於一個初始版本(例如master)創建自己的開發分支(例如dev),在開發分支中簽入自己的代碼,避免影響其他團隊的代碼,避免修改master中國已經趨向穩定的軟件代碼;當開發團隊在自己的分支中完成了新的軟件功能后,將修改后的代碼合並到主干分支中,與其他團隊實現集成測試。
通過靈活運用標簽和分支的功能,即便軟件系統多么復雜、團隊成員眾多、需求頻繁變更,我們也可以將軟件系統的代碼結構整理得條理有序,時刻保持清晰的思路,減少發布過程中的風險和問題。
六、其他常見操作
1. Git tag:顯示所有標簽
2.Git show taname:查看標簽的詳細信息
2. Git checkout commitID:根據提交ID獲取代碼
--End--