簡體   English   中英

僅獲取git遠程存儲庫的標記/引用

[英]Get only tags / references of a git remote repository

是否可以在不下載對象/文件的情況下獲取存儲庫的標簽/引用(例如GitHub)?

我的用例是打包一些軟件的最新測試版,這些軟件歷史悠久,因此很難克隆。

理想情況下,在確定我想要使用的標簽后,我可以:

git clone -b "$tag" --depth=1

使用git ls-remote

$ git ls-remote -t --refs <URL>

這給出了如下輸出:

8f235769a2853c415f811b19cd5effc47cc89433        refs/tags/continuous
24e666ed73486a2ac65f09a1479e91e6ae4a1bbe        refs/tags/continuous-develop
7c2cff2c26c1c2ad4b4023a975cd2365751ec97d        refs/tags/v2.0
35b69eed46e5b163927c78497983355ff6a5dc6b        refs/tags/v2.0-beta10

您可能還希望傳遞--exit-code以確保在沒有返回匹配的引用時退出非0

要僅獲取標記名稱,請通過:

sed -E 's/^[[:xdigit:]]+[[:space:]]+refs\\/tags\\/(.+)/\\1/g'

$ git ls-remote -t --exit-code --refs https://github.com/robert7/nixnote2.git \
  | sed -E 's/^[[:xdigit:]]+[[:space:]]+refs\/tags\/(.+)/\1/g'
continuous
continuous-develop
v2.0
v2.0-beta10

建議:

  • 傳遞--exit-code以確保在沒有返回匹配的引用時退出非0
  • 使用https://版本:它更快,如果你正在打包,你不想冒被要求輸入ssh密鑰的風險。
  • --sort=-v:refname按版本而不是按字面順序排序,並在頂部有最大的版本
  • 使用git -c versionsort.suffix=-防止2.0-rc “在2.0之后”出現
  • 在命令行的末尾添加一個模式以進行過濾。 例如,如果所有版本標簽都以v開頭,則為'v*'

暫無
暫無

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

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