Git 標籤

Galois發表於2020-01-16

列出標籤

 $ git tag

列出特定版本標籤

$ git tag -l 'v1*'

建立標籤

附註標籤 tag -a

附註標籤(annotated)

$ git tag -a v2.56 -m "version 2.56"  # -m 選定標籤
$ git show v2.56  # show 檢視標籤詳細資訊,裡面有對應的提交附註資訊

輕量標籤

輕量標籤(lightweight)

$ git tag v2.6-full  # 不需要使用 -a、-s、-m 選項
$ git show  # 現在的 show 只能看到提出資訊,看不到額外的標籤資訊

補標籤

$ git log --pretty=oneline  # 檢視提交歷史
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
2b19ed90da10f72c7fbb0b9279d7cc897091bdf5 updated rakefile  # 在這裡或在 v0.2 忘記打標籤

在命令末尾指定提交的校驗和(或部分校驗和):

$ git tag -a v0.2 2b19ed

這時候可以用 git tag 看到那次提交上打上標籤了。

共享標籤

預設情況下,git push 命令並不會傳送標籤到遠端倉庫伺服器上,在建立完標籤後必須顯式的推送標籤到共享伺服器上。
可以執行 git push origin [tagname]

$ git push origin v1.6

如果想要一次性推送很多標籤,可以使用帶有 --tag 選項的 git push 命令,這會把所有不在遠端倉庫伺服器上的標籤全部傳送到遠端倉庫裡。

$ git push origin --tags

刪除標籤

要刪除本地倉庫標籤,可以使用命令 git tag -d <tagname>

$ git tag -d v1.2-lw  # 刪除一個輕量級標籤
Deleted tag 'v1.2-lw'  (was e7d5add)

刪除本地倉庫標籤並不會從任何遠端倉庫中移除這個標籤

必須使用 git push <remote> :refs/tags/<tagname> 來更新遠端倉庫:

$ git push origin :refs/tags/v1.2-lw
To /git@github.com:schacon/learngit.git
-  [deleted] v1.2-lw

標出標籤

檢視某個標籤所指向的檔案版本,可以使用 git checkout 命令,雖然說這會讓倉庫處於 “分離頭指標(detacthed HEAD)”狀態。

$ git checkout 2.0.0
Note: checking out '2.0.0'.
.
.
.

在 “detacthed HEAD” 狀態下,如果做了某些更改然後提交它們,標籤不會發生變化,這個新提交將不屬於任何分支,並且無法訪問,除非確切的提交雜湊。

因此,如果需要進行更改。比如修復舊版本的錯誤(這通常需要建立一個新分支):

$ git checkout -b version2 v2.0.0
Switched to a new  branch  'version2'

如果在這之後又進行了一次提交,version2 分支會因為這個改動向前移動,version2 分支就會和 v2.0.0 標籤稍有不同,這時需要非常謹慎。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
不要試圖用百米衝刺的方法完成馬拉松比賽。

相關文章