Git 可以給歷史中的某一個提交打上標籤,以示重要。
人們會使用這個功能來標記發佈結點(v1.0 等等)。
1、列出標籤
1)在 Git 中列出已有的標籤是非常簡單直觀的。
git tag
這個命令以字母順序列出標籤;但是它們出現的順序並不重要
2)可以使用特定的模式查找
git tag -l 'v1.1*'
2、創建標籤
Git 使用兩種主要類型的標籤:輕量標籤(lightweight)與附註標籤(annotated)。
1)輕量標籤:很像一個不會改變的分支 - 它只是一個特定提交的引用。
2)附註標籤:存儲在 Git 數據庫中的一個完整對象。 它們是可以被校驗的;其中包含打標籤者的名字、電子郵件地址、日期時間;還有一個標籤信息;並且可以使用 GNU Privacy Guard (GPG)簽名與驗證。
3、附註標籤
在 Git 中創建一個附註標籤是很簡單的。 最簡單的方式是當你在運行 tag 命令時指定 -a 選項:
git tag -a v1.4
通過使用 git show 命令可以看到標籤信息與對應的提交信息:
git show v1.4
輸出顯示了打標籤者的信息、打標籤的日期時間、附註信息,然後顯示具體的提交信息。
4、輕量標籤
輕量標籤本質上是將提交校驗和存儲到一個文件中 - 沒有保存任何其他信息。 創建輕量標籤,不需要使用 -a、-s 或 -m 選項,只需要提供標籤名字:
git tag bug-110
如果在標籤上運行 git show,你不會看到額外的標籤信息。 命令只會顯示出提交信息:
git show bug-110
5、後期打標籤
你也可以對過去的提交打標籤。
git log --pretty=oneline
顯示提交的歷史信息
要在那個提交上打標籤,你需要在命令的末尾指定提交的校驗和(或部分校驗和)
git tag -a v1.3 46e4466d4f9b96bf4eebf50de86c40259c8da34f
6、共享標籤
默認情況下,git push 命令並不會傳送標籤到遠程倉庫服務器上。
在創建完標籤後你必須顯式地推送標籤到共享服務器上。
git push origin [tagname]
//如:
git push origin v1.5
一次性推送很多標籤,也可以使用帶有 --tags 選項的 git push 命令。這將會把所有不在遠程倉庫服務器上的標籤全部傳送到那裏
git push origin --tags
當其他人從倉庫中克隆或拉取,他們也能得到你的那些標籤
7、刪除標籤
1)刪除掉你本地倉庫上的標籤,可以使用命令 git tag -d <tagname>
git tag -d bug-110 //可以使用下面的命令刪除掉一個輕量級標籤
2)上述命令並不會從任何遠程倉庫中移除這個標籤,你必須使用 git push <remote> :refs/tags/<tagname> 來更新你的遠程倉庫:
git push origin :refs/tags/bug-110
8、檢出標籤
查看某個標籤所指向的文件版本,可以使用 git checkout 命令,這會使你的倉庫處於“分離頭指針(detacthed HEAD)”狀態——這個狀態有些不好的副作用:
git checkout 2.0.0
在“分離頭指針”狀態下,如果你做了某些更改然後提交它們,標籤不會發生變化,但你的新提交將不屬於任何分支,並且將無法訪問,除非確切的提交哈希。
如果你需要進行更改——比如說你正在修復舊版本的錯誤——這通常需要創建一個新分支
git checkout -b version2 v2.0.0