當你有本地的git倉庫時,有很多方法可以獲得最新的標籤。如何獲取遠程git中最新標籤的列表?
但我想獲得遠程回購最新標籤列表。
我知道「git ls-remote」,當你使用像x.y.z這樣的標籤(其中x,y,z是數字)時,一切都很好。 但是,當標籤看起來像「test-x.y.z」和「dev-x.y.z」時,我注意到大量的「測試」標籤會拉出任何新的「dev」標籤,這是不正確的。
那麼,你會如何解決這個問題?
當你有本地的git倉庫時,有很多方法可以獲得最新的標籤。如何獲取遠程git中最新標籤的列表?
但我想獲得遠程回購最新標籤列表。
我知道「git ls-remote」,當你使用像x.y.z這樣的標籤(其中x,y,z是數字)時,一切都很好。 但是,當標籤看起來像「test-x.y.z」和「dev-x.y.z」時,我注意到大量的「測試」標籤會拉出任何新的「dev」標籤,這是不正確的。
那麼,你會如何解決這個問題?
你用linux嗎?如果是這樣你可以使用這個命令
git ls-remote --tags | grep -o 'refs/tags/dev-[0-9]*\.[0-9]*\.[0-9]*' | sort -r | head | grep -o '[^\/]*$'
它會告訴你10個最新的標籤(名稱爲DEV-XYZ)
UPD
你可以使用這個bash腳本,以獲得最新標籤:
#!/bin/bash
TAGS=("dev-[0-9]*\.[0-9]*\.[0-9]*" "test-[0-9]*\.[0-9]*\.[0-9]*" "good-[0-9]*" "new [0-9][0-9][0-9]")
for index in ${!TAGS[*]}
do
git ls-remote --tags | grep -o "refs/tags/${TAGS[$index]}" | sort -rV | head | grep -o '[^\/]*$'
done
只需添加所需的數組TAGS正則表達式,即可爲每個標籤添加10個最新標籤。如果您想獲得更多或更少的標籤,只需將參數-n添加到頭部命令'head -n 5'或'head -n 15'。
爲了以防萬一。將它保存到文件夾〜/ bin(例如名稱爲git_tags),然後添加可執行權限(chmod + x git_tags),這將允許您從每個位置運行此bash腳本(只需鍵入git_tags)。
但它會排序只有「dev」標籤。但是,謝謝...我會這樣想 – Psychozoic
你需要同時獲得這兩個標籤(開發和測試)? – cooperok
是的!實際上它會使用任何其他標籤,例如:new-xxx,good-dd.mm.dd,dd.mm.dd.或其他任何東西。 但如果它不可能 - 好吧。 – Psychozoic
一些人告訴我,命令:
git ls-remote -t repo.url.git | awk '{print $2}' | cut -d '/' -f 3 | cut -d '^' -f 1 | sort -b -t . -k 1,1nr -k 2,2nr -k 3,3r -k 4,4r -k 5,5r | uniq
,這是不是最好的解決辦法,但他睜開眼睛一看就命令sort
。
但我想知道其他版本。
它錯誤地命令0.1.1和0.1.10。 –
@RandyLai你是否想出瞭如何獲得正確的順序,可以處理0.0.19和0.0.2 ? –
這是我用的:'git ls-remote --tags | sed's |。*/\(。* \)$ | \ 1 |'| grep -v'\ ^'| sort -t。 - k1,1nr -k2,2nr -k3,3nr' –
git ls-remote --tags | awk -F'/' '/[0-9].[0-9].[0-9].*/ { print $3}' | sort -nr | head -n1
使用GitHub的API:
curl https://api.github.com/repos/user/repo/tags | jq '.[] .name' | sort -nr | head -n1
這兩個將讓你最新的標籤,您可以通過在n
標誌更改值頭管增加了名單。可以說,獲得前10名最新列表head -n10
我將'-r'加到'jq'調用中以從輸出標籤名稱中刪除''' –
@Marcin,roger that。thnx! –
這隻能處理單個數字版本號。失敗,如0.0.19和0.0.2 –
你是說有很多「測試」標籤導致「dev」標籤不包含在'git ls-remote'的輸出中?我覺得很難相信。如果您指定標籤模式以將輸出限制爲僅限期望的標籤('git ls-remote ... dev- *'),該怎麼辦? –
我在說,如果我只需要10個最後的標籤 - 如果將有10個或更多的「測試」標籤,我不會看到任何新的「dev」標籤。 – Psychozoic
我試圖讓groovy腳本工作,因爲我需要。 Groovy腳本我看到:http://stackoverflow.com/questions/7157170/can-i-get-jenkins-to-build-a-git-tag-from-a-passed-in-parameter – Psychozoic