码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用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"
    
    • 1
    • 2
    • 使用浏览器登录GitHub,打开控制台复制对应的token,粘贴过来

    github.com/settings/tokens 如果你之前没有创建过Token的话,就新建一个Token

    • 然后粘贴过来粘贴到终端的时候是没有任何提示的,不要粘贴两次

    按下确定之后,会使用浏览器打开GitHub,同时命令行终端上面会产生一个八位字符 -

    将其粘贴到浏览器的输入框中,点击继续 -

    之后选择授权即可 -

    6.1.2. 授权成功

    6.2 查看指定仓库中的所有版本的release

    6.2.1. 默认的30个版本

    gh release list -R /
    
    • 1

    比如自己要下载Make-md/makemd,就修改代码为

    gh release list -R Make-md/makemd
    
    • 1

    效果如下,是不是整整齐齐的,很养眼? -

    6.2.2. 自定义的100个版本

    gh release list -R Make-md/makemd --limit 100
    
    • 1

    6.3 下载特定版本的release

    默认的模板为

    gh release download  -D  -R /
    
    • 1
    • 为自己需要下载的版本,为自己要下载的文件夹路径

    修改后

    gh release download 0.8.14 -D E:\Documents\Desktop -R Make-md/makemd
    
    • 1

    下载中

    下载完

    6.4 下载最新版本的release

    • 不指定对应的tag参数,下载的就是最新版本的release
    gh release download -D E:\Documents\Desktop -R Make-md/makemd
    
    • 1

    6.5 下载最新发行版的源代码存档

    gh release download -D E:\Documents\Desktop\test -R Make-md/makemd -A zip
    
    • 1

    6.6 下载特定发行版的源代码存档

    gh release download  -D E:\Documents\Desktop -R Make-md/makemd 0.7.6 --archive=zip
    
    • 1

    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}
    
    • 1
    • 2

    • 最终下载完之后,可以看到很壮观的一长列

    img

    7. 问题

    • 为什么有些版本明明存在,但却下载不下来?
    • 单个下载的时候有可能也是不存在的
    gh release download  -D E:\Documents\Desktop -R Make-md/makemd 0.7.2 --archive=zip
    
    • 1

    是只存在标签,但却不存在实际的文件 -

    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"
    
    • 1
    • 2

  • 相关阅读:
    C++20 实现字符串类型的转换操作
    hive 自定义函数、GenericUDF、GenericUDTF(自定义函数计算给定字符串的长度、将一个任意分割符的字符串切割成独立的单词)
    7、System类
    java笔试题易错总结
    whois人员信息python批处理读入与文本输出
    Django模型继承之Meta继承
    管理视频推广工作:新媒体团队的成功策略
    【mysql进阶】MTS主从同步原理及实操指南
    rom修改----安卓系列机型如何内置app 如何选择so文件内置
    springboot+影院售票小程序 毕业设计-附源码111154
  • 原文地址:https://blog.csdn.net/u014723479/article/details/134520119
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号