【问题标题】:Get only tags / references of a git remote repository仅获取 git 远程存储库的标签/引用
【发布时间】:2019-03-10 17:50:41
【问题描述】:

是否可以在不下载对象/文件的情况下获取存储库(例如 GitHub)的标签/引用?

我的用例是打包一些历史悠久的软件的最新测试版,因此很容易克隆。

理想情况下,在我确定要使用的标签之后,我可以:

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

【问题讨论】:

标签: git git-fetch


【解决方案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开头。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2011-07-08
    • 2013-04-13
    • 2011-04-08
    • 2015-12-08
    • 2018-10-21
    • 2018-09-28
    相关资源
    最近更新 更多