1. 程式人生 > 其它 >【Git技術專題】如何使用git中的tag進行版本開發控制?

【Git技術專題】如何使用git中的tag進行版本開發控制?

什麼是tag

  • git倉庫的tag是git版本庫的一個標記,指向某個commit id標記的快照記錄指標,所以,標籤也是版本庫的一個快照。

  • tag主要用於釋出版本的管理一個當版本釋出後,可以為git當前的HEAD(commit id)打上 v.1.0.1、v.1.0.2等這樣的標籤。

  • tag感覺跟branch有點相似,但是本質上和分工上是不同的。

tag的特徵

  • tag對應某次commit節點, 是一個點,是不可移動的。

  • branch對應一系列commit,是很多點連成的一根線,有一個HEAD 指標,是可以依靠 HEAD 指標移動的。

  • 所以,兩者的區別決定了使用方式,改動程式碼用branch ,不改動只檢視用 tag。

tag 和 branch 的相互配合使用,有時候起到非常方便的效果,例如:已經發布了 v1.0 v2.0 v3.0 三個版本,這個時候,我突然想不改現有程式碼的前提下,在 v2.0 的基礎上加個新功能,作為 v4.0 釋出。就可以檢出 v2.0 的程式碼作為一個 branch ,然後作為開發分支

建立標籤

新增tag

git tag -a -m "added description release notes" #

git tag用作上線釋出的時候打tag處理:

處理命令為:
git tag -a v1.0-beta -m "v1.0 beta版本釋出上線"

建立輕量級標籤,不用-a,-m等引數

例如
git tag v1.0

給指定的commit打Tag

打Tag不必要在head之上,也可在之前的版本上打,這需要你知道某個提交物件的校驗和(通過git log獲取)。

git tag -a v0.1.1 9fbc3d0

可加-m添加註釋

檢視所有的tag版本

  • git tag :檢視tag列表
  • git tag --list :檢視tag列表
  • git tag -l :同理檢視tag列表

命令git checkout [tagname] 切換標籤。

git checkout v1.0

刪除tag

git tag -d tagName
刪除本地名為“v1.0”的Tag
git tag -d v1.0

git push origin :refs/tags/ # 刪除一個遠端標籤

這時只能在本地可以看到自己新建Tag,在遠端中央倉庫中還是看不到在Tags下有如何內容,因為我們還沒把它推送到中央倉庫上

推送到遠端

git push origin # 推送一個本地標籤到遠端倉庫

例如:

git push origin v1.0
推送全部未推送過的本地標籤
git push origin --tags 

如果沒有和遠端沒有同步,可以先拉下來

git pull --rebase origin master

再上傳

git push -u origin master
推送所有標籤
git push origin --tags

此處對歷史提交做tag處理

  • git log --pretty=oneline --abbrev-commit
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme

現在,假設在 v1.2 時你忘記給專案打標籤,也就是在 “updated rakefile” 提交。 你可以在之後補上標籤。 要在那個提交上打標籤,你需要在命令的末尾指定提交的校驗和(或部分校驗和):


  • git tag -a v0.9 -m "v0.9版本釋出上線" # 對歷史提交做tag處理

(總結)推送本地標籤到遠端倉庫

  • git push origin v1.0-beta # 推送到遠端倉庫
  • git push origin v1.0-beta:refs/tags/v1.0-beta # 等效上一條
  • git push origin --tags # 一次性推送全部尚未推送到遠端的本地tags

刪除遠端tag

  • git tag -d tag-name
  • git push origin :refs/tags/tag-name

覆蓋原有的tag

  • git tag -f lilerong

檢視相應標籤的版本資訊

git show tagName //git show 命令,並連同顯示打標籤時的提交物件

idea中建立標籤tag、並推送到遠端倉庫

建立tag

建立完成後,推送標籤到遠端倉庫

接著輸入tag名(一般都是有規則的 不是隨便寫的)

由於不是在當前最新版本打入的標籤,push時需要選擇push tags (all),不然不能push。

在GitLab標籤中就可以看到剛才push的標籤

極限就是為了超越而存在的