如何下载GitHub版本的二进制文件?

Tyl*_*aff 6 tags git binary release github

我有一个包含二进制文件的仓库,我需要它.

我可以

git checkout tags/thetagoftherelease
Run Code Online (Sandbox Code Playgroud)

这似乎检查正确的标签,但不会拉下二进制文件.如何下载添加到发行版的二进制文件(发行版中的绿色框)?

在发行版中添加了二进制文件的图片.

在此输入图像描述

Ted*_*Ted 20

我已经尝试了几天试图找到正确的答案,最后我想通过curl命令如何做到这一点.这是一个分为3个步骤的过程.

首先,获取最新版本的资产列表:

curl -H "Authorization: token YOURGITHUBTOKEN" \
    https://api.github.com/repos/NAME/REPO/releases/latest 
Run Code Online (Sandbox Code Playgroud)

然后在JSON中,查找所需资产的URL.例如,它看起来像:

"url": "https://api.github.com/repos/NAME/REPO/releases/assets/1275759"
Run Code Online (Sandbox Code Playgroud)

然后将其传递给另一个curl命令以检索实际的URL,这实际上是指向Amazon S3文件的链接.

curl -H "Authorization: token YOURGITHUBTOKEN" \
     -H "Accept:application/octet-stream" \
     -i https://api.github.com/repos/NAME/REPO/releases/assets/1275759
Run Code Online (Sandbox Code Playgroud)

URL将位于HTTP响应的"location"字段中,然后使用curl获取如下文件:

curl "https://github-cloud.s3.amazonaws.com...." -i -o FILENAME
Run Code Online (Sandbox Code Playgroud)

  • 确保使用引号将 s3 url 括起来。否则 curl 不会得到它apropiately。 (2认同)

Chr*_*ris 6

二进制发布资产存在于 Git 之外,无法使用标准工具进行管理。

不过,它们应该可以通过 GitHub 的 API 获得。

  1. 列出存储库的发布资产

    GET /repos/:owner/:repo/releases/:id/assets
    
    Run Code Online (Sandbox Code Playgroud)

    这将发回一个 JSON 文档,其中列出了存储库的发布资产,例如

    GET /repos/:owner/:repo/releases/:id/assets
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从你想要的版本中检索 assts,如id上面定义的那样:

    GET /repos/:owner/:repo/releases/assets/:id
    
    Run Code Online (Sandbox Code Playgroud)

    如果要下载资产的二进制内容,请传递媒体类型"application/octet-stream". API 要么将客户端重定向到该位置,要么在可能的情况下直接将其流式传输。API 客户端应该同时处理 a200302响应。

文档所述,这些请求都是相对于https://api.github.com.