【Git】Git tag 介紹
Git tag 是一個平常不太會用到的功能,基本上每次要使用時都要再看一次指令介紹,所以這邊就來整理一下。
什麼是 Tag
Tag (標籤) 是一個指向特定 commit 的指標,可以用來標記重要的 commit 或是版本號,通常會用在 release 版本上來標示版本號。
基本使用
新增 tag
tag 又分兩種類型,一種是輕量型的 tag,只是一個指向 commit 的指標,另一種是附註型的 tag,可以附註一些資訊。
git tag <tag_name> <commit_id>
新增 tag 時可以不用指定 commit_id,預設會指向目前的 HEAD。
git tag -a <tag_name> -m "<tag_message>"
-a
代表附註型標籤,-m
代表 tag 的訊息。
如果有 -m
,則預設會帶入 -a
,所以可以省略 -a
。
如果只有 -a
,會開啟 vim 讓你輸入 tag 的訊息。
如果要判斷 tag 是哪一種,可以用 git show <tag_name>
來查看。
匡起來的部分就是 附註型標籤(annotated tag) 多出來的部分,可以看到多出了 Tagger、Date 以及訊息的文字。
共同有的部分會顯示 commit 的 hash 值、作者、日期、訊息以及更動的內容。
刪除 tag
git tag -d <tag_name>
查看 tag 名稱
git tag
如果要找出特定 prefix 的 tag,可以用 git tag -l "<prefix>*"
。
git tag -l "v1.0.*"
查看 tag 詳細資訊
git show <tag_name>
用 tag 切換到特定的 commit
git checkout <tag_name>
可能會看到一段提示訊息,因為 tag 是指向特定的 commit,所以會進入到分離 HEAD 的狀態。
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>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
可以加上 --detach
來隱藏這段提示訊息。
git checkout --detach <tag_name>
推送 tag 到遠端
git push origin <tag_name>