簡體   English   中英

從當前提交中獲取最新的git標記

[英]Get latest git tag from the current commit

我試圖從我樹中的某個點獲取最新的git標簽。

樹看起來如下:

* 334322c|2016-12-06| (tag: 0.1265, tag: 0.1264) (18 hours ago)
* 739392e|2016-12-06| (HEAD -> testbranch, tag: 0.1263, tag: 0.1262) (19 hours ago)
* 8ec1add|2016-12-06| (tag: 0.1261, tag: 0.1260, tag: 0.1259) (20 hours ago)
* 5b2667b|2016-12-06| (tag: 0.1258) (21 hours ago)
* c7ff4bc|2016-12-06| (tag: 0.1257, tag: 0.1256) (22 hours ago)

0.1263是我要找的git標簽。

當在739392e使用git describe --tags只返回0.1262 ,這是該提交中的第一個標記,而我沒有得到所有候選者。

當在739392e使用git describe --tags $(git rev-list --tags --max-count=1)返回0.1265 ,樹上的最新標記(無論HEAD在哪里)。

如果你可以對名稱上的標簽進行排序(看起來合理嗎?),你可以使用以下命令:

git tag --points-at HEAD --sort -version:refname | head -1

如果沒有,請先檢查標簽上是否設置了committerdate或authordate:

git tag --points-at HEAD --format='%(*committerdate:iso) %(*authordate:iso) %(refname) %(*objectname) %(objectname)'

這將輸出如下內容:

2018-05-28 09:58:06 +0200 2018-05-28 09:58:06 +0200 refs/tags/3.11.47 55a4f6de2b1466d1a2ee60acc53aa12fd5ad07b3 914ac376102a6c7f189453fbcd8737db32b90693
2018-05-28 09:58:06 +0200 2018-05-28 09:58:06 +0200 refs/tags/3.11.46 55a4f6de2b1466d1a2ee60acc53aa12fd5ad07b3 e0d37427b89fbd6c3baa898a1264a9ba3e3ff7f

從這個例子中可以看出,兩個標簽都具有相同的committerdate和authordate,這意味着我們無法對這些字段進行排序。 但是,如果設置正確,您可以使用此命令:

git tag --points-at HEAD --sort -version:creatordate | head -1

git help tag

--sort=<key>根據給定的密鑰排序。 前綴 - 按值的降序排序 您可以--sort=<key>使用--sort=<key>選項,在這種情況下,最后一個鍵成為主鍵。 還支持“version:refname”或“v:refname”(標記名稱被視為版本)。 “version:refname”排序順序也可能受“versionsort.suffix”配置變量的影響。 支持的密鑰與git for-each-ref中的密鑰相同 排序順序默認為tag.sort變量(如果存在)配置的值,否則為字典順序。 請參閱git-config(1)。

git help for-each-ref

對於提交和標記對象,特殊的創建和創建者字段將對應於提交者或標記器字段中的相應日期或名稱 - 電子郵件日期元組,具體取決於對象類型。 這些用於處理帶注釋和輕量級標簽的混合。

您可以使用git tag 子命令 ,list選項指向您正在檢查的特定提交:

git tag -l --points-at <commit|object>

如果你使用的是git 2.0或更高版本,它有一個--sort選項,它允許你按標簽日期順序降序排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM