[英]How to get list of latest tags in remote git?
當你有本地git repo時,有很多方法可以獲得最新的標簽。
但我想得到遠程回購的最新標簽列表。
我知道“git ls-remote”,當你使用像xyz這樣的標簽時,一切都很好(其中x,y,z是數字)。 但是當標簽看起來像“test-xyz”和“dev-xyz”時,我注意到大量的“測試”標簽會拔出任何新的“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個最新的標簽。 如果你想獲得更多或更少的標簽,只需將param -n添加到head命令'head -n 5'或'head -n 15'。
以防萬一。 將它保存在〜/ bin文件夾中(例如名稱為git_tags),然后添加可執行權限(chmod + x git_tags),這將允許您從每個地方運行此bash腳本(只需鍵入git_tags)。
有人告訴我那個命令:
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
。
但我想知道其他版本。
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
使用Git 2.18(2018年第二季度), git ls-remote
學習了一個選項,允許根據顯示的引用名對其輸出進行排序。
見Harald Nordgren( HaraldNordgren
) 提交的1fb20df (2018年4月9日) 。
(由Junio C gitster
合並- gitster
-在提交6c0110f ,2018年5月8日)
ls-remote
:創建'--sort
'選項為
ls-remote
創建一個'--sort
'選項,基於for-each-ref
。
這允許根據版本語義對引用名稱進行排序,以便在v1.10
之前對v1.2
進行排序。
因此,請查看Git 2.0和2.8中引入的for-each-ref --sort
選項 ,因為它們現在適用於git ls-remote --sort
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.