簡體   English   中英

如何獲取遠程git中的最新標簽列表?

[英]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.

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