如何获得到github LFS(大文件存储)中文件的直接链接?

时间:2019-10-03 13:03:59

标签: git github git-lfs

所有人。

我使用GIT LFS(大文件存储)将一个大文件上传到gitub。
首先,我可以从直接链接下载文件。

raw.githubusercontent.com/userName/reposiotry/master/file.mp4

但是第二天文件开始包含文本值


version https://git-lfs.github.com/spec/v1
oid sha256:59f24bc922e1a48bb3feeba18b23f0e9622a7ee07166d925650d7a933283f8b1
size 123882252

如何下​​载此文件?如何直接链接到它?

3 个答案:

答案 0 :(得分:1)

您需要进入Web界面并找到文件的原始链接,然后改用它。

当您使用Git LFS时,实际上存储在存储库中的文件就是一个指针文件,就像您在上面看到的那样。 GitHub具有不同的URL,可为存储库内容和Git LFS文件提供原始内容,因此,如果要获取Git LFS内容,则需要使用适当的链接。如果您以前将文件作为非LFS文件使用,那么当您再次将其作为LFS文件上传时,URL将会更改。

不建议使用网页中的URL或以CDN形式使用直接链接。

答案 1 :(得分:1)

引用article

  

存储配额

     

如果在不购买数据包的情况下使用了超过1 GB的存储,您仍然可以克隆具有大量资产的存储库,但是您将仅检索指针文件,而无法将新文件备份。 / p>

我假设您尚未在GitHub上为git lfs购买任何其他存储。如您所说,最初您可以通过以下链接访问它:http://raw.githubusercontent.com/userName/reposiotry/master/file.mp4

我猜测您上传了更多此类文件,导致您超出了存储配额(即1 GB)。正如上面的文章所指出的,只有超出配额后,您才可以检索指针文件。

您可以在此处https://github.com/settings/billing

检查是否超出了存储配额的限制。

但是,如果我的假设是错误的,那么您可以尝试使用此链接获取文件

https://media.githubusercontent.com/media/user_name/repository_name/branch_name/file_name

答案 2 :(得分:0)

今天我一直在寻找相同的答案,但没有找到足以解决问题的具体方法,所以我自己进行挖掘,发现了这一点:

例如,假设ServerAddres是https://api.github.com

  1. 如果知道您的RepoName(“ UserName / ReposiotryName”对)和FileHash,
    然后您获取:ServerAddres + '/repos/RepoName/git/blobs/FileHash'
    如果有回应,您有:
version https://git-lfs.github.com/spec/v1  
oid sha256:59f24bc922e1a48bb3feeba18b23f0e9622a7ee07166d925650d7a933283f8b1  
size 123882252
  1. 而不是您必须在存储库的内容中搜索匹配的FileHash,
    正在提取:ServerAddres + '/repos/RepoName/contents'
    对此您有:
{
  "name": "filename.ext",
  "path": "path/filename.ext",
  "sha": "FileHash",
  "size": 42,
  "url": "https://api.github.com/repos/RepoName/contents/path/filename.ext?ref=master",
  "html_url": "...",
  "git_url": "...",
  "download_url": "...",
  "type": "file",
  "_links": { ... }
}
  1. 现在您获取url的值,并取值,
    对此您有:
{
  "name": "filename.ext",
  "path": "path/filename.ext",
  "sha": "FileHash",
  "size": 720896,
  "url": "...",
  "html_url": "...",
  "git_url": "...",
  "download_url": "https://media.githubusercontent.com/media/RepoName/RepoHash/path/filename.ext?token=...",
  "type": "file",
  "content": "...", // same as response from pt. 1
  "encoding": "base64",
  "_links": { ... }
}
  1. 现在您获取download_url的值,并取值,
    作为响应,您应该具有BINARY个文件内容。

就是这样。