簡體   English   中英

在遠程git存儲庫中查找與給定標簽相同提交的所有標簽

[英]Find all tags at same commit as a given tag in a remote git repository

我試圖在遠程 git存儲庫中查找與給定標簽具有相同提交的所有標簽。 如果有可能,我不想克隆遠程的本地副本。

例如,我有一個存儲庫,其中兩個標記release/latestrelease/1.00都指向同一提交。 因此,給定標簽release/latest我希望我的腳本返回release/1.00

我正在使用ls-remote列出遠程標簽:

git ls-remote --tags gitolite@myserver.example.org:/base.git

該命令返回

ad759      refs/tags/release/1.00
0e9d0      refs/tags/release/1.00^{}
de388      refs/tags/release/latest
0e9d0      refs/tags/release/latest^{}

(我縮短了提交哈希以節省空間。)

我不知道如何解釋:為什么每個標簽有兩行? 哪些參考文獻指向“真實”標簽? 我應該忽略不帶^{}的標記嗎?

^{}結尾的標簽是git commit的實際( 輕量級 )標簽; 而沒有此后綴的是(PGP-)簽名或其他注釋的。

在遠程存儲庫上,您必須解析ls-remote的輸出,如下所示:

tags=$(git ls-remote --tags gitolite@myserver.example.org:/base.git)
REV=$(echo "$tags" | sed -n 's#\s*refs/tags/release/latest$##p')
echo "$tags" | sed -n "s#$REV\s*refs/tags/##p"

在本地(1.7.0)存儲庫中,您可以簡單地使用

git tag --points-at release/latest

在1.7.0之前的版本中,在遠程解決方案中用git show-ref --tags -d替換ls-remote。

暫無
暫無

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

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