git - 仅获取 git 远程存储库的标签/引用

标签 git git-fetch

是否可以在不下载对象/文件的情况下获取存储库(例如 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 以确保在没有返回匹配的 refs 时非 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 以确保在没有匹配的 ref 返回时非 0 退出。
  • 使用 https:// 版本:速度更快,而且如果您要打包,您不想冒被要求提供 ssh key 的风险。
  • --sort=-v:refname 按版本排序而不是按字法排序,最大的版本在顶部
  • 使用 git -c versionsort.suffix=- 来防止 2.0-rc2.0 之后出现
  • 在命令行末尾添加一个模式来过滤。例如 'v*' 如果所有版本标签都以 v 开头。

关于git - 仅获取 git 远程存储库的标签/引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52661928/

相关文章:

ios - 查看 StreamingKit 的 git 存储库时遇到问题

Git Pull 不执行 Git Fetch

git - 使用 https 克隆项目 gitlab 时出错

bash - 在 bash 脚本中向 git 提供密码

git - Git如何计算提交以获取

git - 我如何使用 Git *INTO* pull/取一个裸存储库?

GIT 获取和 rebase

git fetch --unshallow 给出 :"fatal: --unshallow on a complete repository does not make sense"错误

git - Git 会克隆、获取或推送孤儿提交吗?

git - 检查本地和远程分支差异的有效方法