使用cli批量下载GitHub仓库中所有的release
文章目录
- 1\. 引言
- 2\. 工具官网
- 3\. 官方教程
- 4\. 测试用的网址
- 5\. 安装
- 5.1. 使用winget安装
- 5.2. 查看gh是否安装成功了
- 6\. 使用
- 6.1. 进行GitHub授权
- 6.1.1. 授权
- 6.1.2. 授权成功
- 6.2 查看指定仓库中的所有版本的release
- 6.2.1. 默认的30个版本
- 6.2.2. 自定义的100个版本
- 6.3 下载特定版本的release
- 6.4 下载最新版本的release
- 6.5 下载最新发行版的源代码存档
- 6.6 下载特定发行版的源代码存档
- 6.7 下载所有版本的release源代码存档
- 7\. 问题
- 7.1. 为什么显示的版本号不全?
- 7.2 failed to authenticate via web browser:
1. 引言
- GitHub上面的仓库往往有很多版本,有些版本很好用,有些版本上面一大堆bug。因此,我们需要对仓库上的各个release软件进行筛选,找到最好用的那个软件。但如果一个个手动下载的话,效率太低了,因此我们可以用CL这款工具进行批量化asset下载,简单快捷高效。
2. 工具官网
- GitHub - cli/cli: GitHub’s official command line tool
3. 官方教程
- git - How to download all files from GitHub release? - Stack Overflow
- gh release download | GitHub CLI 中文手册
4. 测试用的网址
- Releases · Make-md/makemd · GitHub
5. 安装
5.1. 使用winget安装
- winget install --id GitHub.cli
安装完成
5.2. 查看gh是否安装成功了
- 重启打开一个PowerShell中断
- gh --version
- 如果可以显示出版本号,就表明安装成功了
6. 使用
6.1. 进行GitHub授权
- 在使用之前需要先进行授权,否则会显示下面的问题
- 直接输入gh auth login
- 个人用户一般选择默认的GitHub服务,直接按Enter键
- 选择GitHub的方式,可以用默认的HTTPS方式
6.1.1. 授权
- 如果出错的话,就给PowerShell添加代理
$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"
- 使用浏览器登录GitHub,打开控制台复制对应的token,粘贴过来
github.com/settings/tokens 如果你之前没有创建过Token的话,就新建一个Token
- 然后粘贴过来粘贴到终端的时候是没有任何提示的,不要粘贴两次
按下确定之后,会使用浏览器打开GitHub,同时命令行终端上面会产生一个八位字符 -
将其粘贴到浏览器的输入框中,点击继续 -
之后选择授权即可 -
6.1.2. 授权成功
6.2 查看指定仓库中的所有版本的release
6.2.1. 默认的30个版本
gh release list -R <username>/<repo>
比如自己要下载Make-md/makemd,就修改代码为
gh release list -R Make-md/makemd
效果如下,是不是整整齐齐的,很养眼? -
6.2.2. 自定义的100个版本
gh release list -R Make-md/makemd --limit 100
6.3 下载特定版本的release
默认的模板为
gh release download <tag> -D <dest> -R <username>/<repo>
- 为自己需要下载的版本,为自己要下载的文件夹路径
修改后
gh release download 0.8.14 -D E:\Documents\Desktop -R Make-md/makemd
下载中
下载完
6.4 下载最新版本的release
- 不指定对应的tag参数,下载的就是最新版本的release
gh release download -D E:\Documents\Desktop -R Make-md/makemd
6.5 下载最新发行版的源代码存档
gh release download -D E:\Documents\Desktop\test -R Make-md/makemd -A zip
6.6 下载特定发行版的源代码存档
gh release download -D E:\Documents\Desktop -R Make-md/makemd 0.7.6 --archive=zip
6.7 下载所有版本的release源代码存档
- 下次使用的时候,只需要更改一下仓库名称即可
gh release download -p "*" -D E:\Documents\Desktop -R Make-md/makemd
gh release list -R Make-md/makemd | Select-String -Pattern '\d+\.\d+(\.\d+)?' | %{$_.Matches.Value} | ForEach-Object {Write-Host "Downloading version $_..." ; gh release download $_ -D E:\Documents\Desktop\test -R Make-md/makemd -A zip}
- 最终下载完之后,可以看到很壮观的一长列
img
7. 问题
- 为什么有些版本明明存在,但却下载不下来?
- 单个下载的时候有可能也是不存在的
gh release download -D E:\Documents\Desktop -R Make-md/makemd 0.7.2 --archive=zip
是只存在标签,但却不存在实际的文件 -
7.1. 为什么显示的版本号不全?
- 这个仓库有7页,按理说版本应该非常多了,但却只能显示出来少量的几个版本
- gh release list -R Make-md/makemd
- 这是因为命令默认只会显示最近的30个版本
- 给命令加上一个限制之后,就显示出来了更多的版本
7.2 failed to authenticate via web browser:
- Post “https://github.com/login/device/code”: read tcp 192.168.3.41:61001->20.205.243.166:443: wsarecv: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
- 给PowerShell添加代理即可
$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"