是否可以在不下载对象/文件的情况下获取存储库(例如 GitHub)的标签/引用?
我的用例是打包某些软件的最新测试版,这些软件具有悠久的历史,因此很难克隆。
理想情况下,在确定我希望使用的标签后,我可以:
git clone -b "$tag" --depth=1
Use git ls-remote https://manned.org/git-ls-remote.1:
$ 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
建议:
- Pass
--exit-code
以确保非0
当没有返回匹配的引用时退出。
- Use the
https://
版本:它更快,如果您正在打包,您不想冒被要求提供 ssh 密钥的风险。
-
--sort=-v:refname
按版本而不是按字典顺序排序,并将最大的版本放在顶部
- Use
git -c versionsort.suffix=-
阻止2.0-rc
来“之后”2.0
- 在命令行末尾添加一个模式以进行过滤。例如
'v*'
如果所有版本标签都以 a 开头v
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)