標籤是 Git 的一個簡單方面,讓您可以識別程式碼的特定版本釋出。您可以將標籤視為一個不會改變的分支。一旦它被創建,就失去了改變提交歷史的能力。

兩種 Git 標籤

Git 中有兩種標籤: 註解標籤輕量標籤。它們都可以讓您參考儲存庫中的特定提交,但在可以存儲的元數據量上有所不同。

註解標籤

註解標籤會將額外的元數據(例如作者名稱、版本說明、標籤消息和日期)作為完整對象存儲在 Git 數據庫中。所有這些數據對於您的專案的 公開發行 都非常重要。

標籤還可以包括更具描述性的標籤消息註解,就像 合併時的提交消息 一樣。通常,這是透過使用(-a 表示註解)來實現的:

$ git tag -a v1.0.0

執行此命令會創建一個新的註解標籤,標識版本 v1.0.0。然後該命令會打開您的提交編輯器,以便您可以填寫元數據。

若您想要添加標籤消息,可以傳遞 -m 選項,這是一種類似於 git commit -m 的方法。

$ git tag -a v1.0.0 -m "釋出版本 v1.0.0"

輕量標籤

輕量標籤是為 Git 儲存庫添加標籤的最簡單方式,因為它們僅存儲所指向的提交的哈希值。它們是在沒有 -a、-s 或 -m 選項的情況下創建的,並且包含任何額外信息。

輕量標籤本質上是指向提交的“書籤”,它們只是名稱和指向提交的指針,方便創建指向相關提交的快速鏈接。 來自 Bitbucket 的教學

要創建新的輕量標籤,請執行以下命令:

$ git tag v1.0.0

其他命令

列出標籤 - git tag
當您想列出所有現有標籤時,可以使用此命令,或者您可以使用 git tag -l 'v1.1.*' 過濾列表,* 充當通配符。它將返回標有 v1.1 的標籤列表。

您會注意到當您調用 git tag 時,您無法看到註解的內容。要預覽它們,您必須在命令中添加 -ngit tag -n3

$ git tag -l -n3
v1.0            釋出版本 1.0
v1.1            釋出版本 1.1
v1.2            釋出版本 1.2

該命令列出了所有現有標籤,最多顯示 3 行其標籤消息。預設情況下,-n 僅顯示第一行。

標籤詳情 - git show <tag_identifier>
該命令會顯示您所標記的標籤詳情信息

$ git show v1.0
tag v1.0
Tagger: Kolosek 
Date:   Fri May 11 10:45:33 2018 +0100

釋出版本 1.0
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iMTvhAA...
-----END PGP SIGNATURE-----

commit 7d44b6bb8abb96dee33f32610f56441496d77e8a
Author: Kolosek 
Date:   Fri May 11 9:50:13 2018 +0100

    編輯登入表單
...

它會打印作者的名稱、創建日期、消息、GnuPG 簽名(如果有)以及有關所引用提交的信息。如果該標籤是輕量標籤,輸出將僅限於引用提交的相關信息。

編輯標籤 - git tag -a -f <tag_identifier> <commit_id>
如果您嘗試創建一個與已有標籤同名的標籤,Git 將會拋出錯誤:fatal: tag 'v1.0' already exists

您不必刪除它並重新添加標籤,您可以簡單地替換它,同時保留現有的描述。選擇您提交歷史中的某個位置,使用 <commit_id> 指定要移動標籤的位置,並在命令中添加 -f-force

請記得在進行這樣的“強制”更改時通知團隊成員。如果他們仍然擁有“舊”的標籤版本,當他們試圖推送到伺服器時可能會造成衝突!

如果您已經將標籤推送到伺服器並想要修正它,請確保您的本地標籤版本是正確的,然後運行 以下命令: git push origin -f --tags

刪除標籤 - git tag -d <tag_identifier>
一般來說,沒有理由刪除標籤,因為它們的成本低且不會佔用任何資源,除非您錯誤地創建了一個指向錯誤提交的標籤。

如果該標籤已經被推送,而您需要從遠端儲存庫中刪除它,請運行:$ git push origin :v1.0

發布標籤 - git push <location> <tag_identifier>
標籤只是指向您的本地儲存庫的引用,並且不會自動 與其餘程式碼一起推送到遠端儲存庫。相反,您可以單獨推送標籤,或者運行 git push --tags,這將一次性推送所有標籤。這可以類似於推送分支的方式進行:

$ git push origin v1.0

排序標籤 - git tag --sort=<type>
當查看具有大量標籤的專案時,使用 排序選項 可以很方便。支持的類型有:

  • refname(按字典順序排序),
  • version:refnamev:refname(在這裡標籤名稱被視為版本)。
git tag -l --sort=-version:refname "v*"

在這裡,我列出了所有名稱以 "v" 開頭的標籤,按照它們的版本進行排序。


難道git tag不就是社交媒體中的 #tag,只是它有自己的方式?它幫助您返回並列出所有之前的版本釋出!

在您閱讀的同時,請注意 Kolosek 總是樂意提供幫助,讓您的想法變為現實。如果您需要幫助,可以隨時通過社交媒體聯繫 Kolosek。Twitter 也許是個不錯的選擇?


原文出處:https://dev.to/neshaz/a-tutorial-for-tagging-releases-in-git-147e


共有 0 則留言