2014-09-18 161 views
5

我有一个二进制文件在我需要的回购。如何下载GitHub发行版的二进制文件?

我可以

git checkout tags/thetagoftherelease 

这似乎结帐正确的标签,但不会拉下二进制文件。我如何下拉添加到发行版中的二进制文件(发行版上的绿色框)?

在发布中添加了二进制文件的图片。

enter image description here

+0

唐氏票没有意见也没有什么帮助 – 2014-09-18 23:24:20

+0

*上拉*或*结帐*?这些在Git中是两个非常不同的术语。另外,什么“绿色盒子”? – Jubobs 2014-09-18 23:26:22

+0

对不起,正在使用拉口语。像绿箱子一样,将二进制文件添加到git上的发行版中。它们显示为绿色框,您可以在github上手动下载。我想从发行版中下载这些添加的二进制文件。检出release标签不会给我二进制文件。 – 2014-09-18 23:30:00

回答

14

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

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

curl -H "Authorization: token YOURGITHUBTOKEN" https://api.github.com/repos/NAME/REPO/releases/latest 

然后在JSON,查找你想要的资产的URL。例如,它看起来像: “url”:“https://api.github.com/repos/NAME/REPO/releases/assets/1275759

然后,您将此传递给另一个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 

的URL会在HTTP响应的“位置”字段,然后使用curl得到这样的文件:

curl "https://github-cloud.s3.amazonaws.com...." -i -o FILENAME 
+1

最好的答案,谢谢。请使用http://httpie.org(CLI HTTP客户端,用户友好的卷曲替换,直观的用户界面,JSON支持,语法突出显示,类似wget的下载,扩展等) – frekele 2016-07-10 17:41:09

+1

Make确保使用引号围绕s3 url。否则卷曲不会得到它适当。 – 2018-02-22 12:00:02

4

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

虽然它们应该可以通过GitHub的API获得。

  1. List the repository's release assets

    GET /repos/:owner/:repo/releases/:id/assets 
    

    这将发回一个JSON文件,列出了发布资产的库,例如

    [ 
        { 
        "url": "https://api.github.com/repos/octocat/Hello-World/releases/assets/1", 
        "browser_download_url": "https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip", 
        "id": 1, 
        "name": "example.zip", 
        "label": "short description", 
        "state": "uploaded", 
        "content_type": "application/zip", 
        "size": 1024, 
        "download_count": 42, 
        "created_at": "2013-02-27T19:35:32Z", 
        "updated_at": "2013-02-27T19:35:32Z", 
        "uploader": { 
         "login": "octocat", 
         ... 
        } 
        } 
    ] 
    
  2. Retrieve the assts from the release you want,由其id从上面的定义:

    GET /repos/:owner/:repo/releases/assets/:id 
    

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

由于documented,这些请求都是相对于https://api.github.com

相关问题