[英]Get penultimate git tag on branch, matching a given glob
我有一個 git 存儲庫,在主分支上提交,每個可能有多個標簽:
HASH: TAGS
hash7: [v6.0.0, foo1, foo2, foo3]
hash6: []
hash5: []
hash4: [v5.0.0, bar1, bar2, bar3]
hash3: [v4.0.0, baz1, baz2, baz3]
hash2: []
hash1: [v3.0.0, foobar1, foobar2, foobar3]
我有一個由創建版本標簽( v.*.*.*
)觸發的 github 操作。 這個動作需要能夠找出之前的版本標簽。 因此,例如,如果操作在hash7
( v6.0.0
) 上運行,它應該返回v5.0.0
。 如果它在hash4
( v5.0.0
) 上運行,它應該返回v4.0.0
等。
有許多與此相關的 stackoverflow 問題。 我嘗試了以下各種組合:
git describe --match 'v*' --tags
git rev-list --tags='v*' --max-count=1 --skip=1
git describe --tags --match "v*" --abbrev=0 git rev-list --tags="v*" --max-count=1 --skip=1
后者,例如,當在v6.0.0
上運行時,在沒有跳過選項的情況下運行時給出最新的標簽 ( v6.0.0
),但在跳過選項設置為 1 時給出v4.0.0
。
我已經做了很多谷歌搜索,但我找不到任何可靠的東西。
總而言之,我追求的是:此分支上最近的版本標簽(不包括附加到當前位於 HEAD 的提交的版本標簽)
跳過HEAD
:
git describe --abbrev=0 --match="v*" --tags HEAD~
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.