[英]Find all tags at same commit as a given tag in a remote git repository
我試圖在遠程 git存儲庫中查找與給定標簽具有相同提交的所有標簽。 如果有可能,我不想克隆遠程的本地副本。
例如,我有一個存儲庫,其中兩個標記release/latest
和release/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.