Git 版本控制教學 - tag 版號技巧

Posted on  Oct 27, 2022  in  Git 版本控制  by  Amo Chen  ‐ 3 min read

程式的開發幾乎都需要所謂的「版號」或「版本號」,除了開發者之間可用以識別正在開發或維護的程式是否版本相同之外,也可以用版號來表示程式的開發狀態(例如 development, alpha, beta, production/stable 等等),或者是標示重大版本演進(例如從 1.0 演變為 2.0)。

不同的開發者或者開發團隊,也都會有不同的版號規則。

但目前常見的 2 種版號規則如下:

更詳細的說明可以參見:http://en.wikipedia.org/wiki/Software_versioning

上版號的工作,可以利用 Git 標籤的功能達成。

本文將介紹如何使用 Git 的標籤(tag)功能

新增標籤 & 列出標籤

Git 的標籤分為 2 種,分別為 lightweight 以及 annotated 。

lightweight tag

lightweight 標籤其實就只是一個指標(pointer)指向特定的 commit 而已。

新增 lightweight 標籤的方法很簡單:

$ git tag <標籤名>

例如:

$ git tag my-lightweight-tag

新增標籤之後,可以用以下指令列出標籤:

$ git tag

又或者可以用 git show <標籤名> 來查看 lightweight 標籤所對應到的commit 資訊,例如:

$ git show my-lightweight-tag

annotated tag

Annotated tag 是 Git 官方文件推薦使用的標籤。

Annotated 標籤不像 lightweight 標籤, annotated 標籤在建立時也會同時儲存許多資訊,例如上標籤的日期、上標籤者的名字、標籤訊息以及 Checksum 等等,此外還可以加簽(sign)進行驗證。

Annotated 標籤與 lightweight 標籤使用方法類似,但需要加上 -a <tag name> , -m <message> 2 個參數,例如:

$ git tag -a 'my-annotated-tag' -m 'my first annotated tag!'

新增 annotated 標籤之後,可以使用指令 git tag -n 查看:

$ git tag -n
my-annotated-tag my first annotated tag

為特定 commit id 上標籤

預設的標籤是加在當前的 commit,不過也可以為之前的 commit 上標籤,只要加上想加標籤的 commit 編號即可:

$ git tag -a '1.0.dev' 3b7de7f

推送標籤

標籤的新增都是在本地端(local)進行,所以其他成員或協作者並無法看到你上的標籤,所以就必須將標籤透過 git push <remote repository> <tag_name> 上傳到遠端 repository 。

例如:

$ git push origin my-lightweight-tag

如此一來,其他成員就能夠透過遠端 repository 得到你上的標籤。

此外,如果想一次性地將本地端所有標籤上傳,可以使用以下指令:

$ git push --tags

刪除標籤

標籤的刪除十分容易,只要用以下指令即可:

$ git tag -d <tag name>

該指令只會刪除本地端的標籤。不過如果該標籤已經上傳到遠端(remote) repository 的話,就得使用另外的指令刪除。

刪除遠端儲存庫(remote repository)的標籤

刪除遠端儲存庫(remote repository)的標籤指令為:

$ git push <remote repository> :refs/tags/<tag name>

例如:

$ git push origin :refs/tags/my-lightweight-tag

利用標籤切換版本

Git 也可以利用標籤進行版本切換,例如切換到 v1.0 標籤時的版本:

$ git checkout v1.0

這時會出現類似以下的訊息,代表切換成功:

Note: switching to 'v1.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

如果要以此版本為基礎開新的分支,可以輸入指令 git switch -c <new-branch-name> , 這個指令在做 hotfix 時相當好用,例如:

$ git switch -c hotfix-v1.1

git switch指令等同於以下指令:

$ git checkout -b <new brance> <tag name>

例如:

$ git checkout -b hotfix-v1.1 v1.0

以上,就是 git tag 的教學!

Happy Coding!

對抗久坐職業傷害

研究指出每天增加 2 小時坐著的時間,會增加大腸癌、心臟疾病、肺癌的風險,也造成肩頸、腰背疼痛等常見問題。

然而對抗這些問題,卻只需要工作時定期休息跟伸展身體即可!

你想輕鬆改變現狀嗎?試試看我們的 PomodoRoll 番茄鐘吧! PomodoRoll 番茄鐘會根據你所設定的專注時間,定期建議你 1 項辦公族適用的伸展運動,幫助你打敗久坐所帶來的傷害!

贊助我們的創作

看完這篇文章了嗎? 休息一下,喝杯咖啡吧!

如果你覺得 MyApollo 有讓你獲得實用的資訊,希望能看到更多的技術分享,邀請你贊助我們一杯咖啡,讓我們有更多的動力與精力繼續提供高品質的文章,感謝你的支持!