如何从GitLab下载单个文件?

时间:2019-07-08 22:39:59

标签: python linux git

我知道可以提取然后使用带有/ to / file路径的checkout下载该特定文件。

我的问题是我每天有1 MB的数据上限,并且git fetch无论如何都将下载所有数据,即使它直到使用git checkout才将它们保存到磁盘上。我仍然使用我的数据

我是否了解git fetch / checkout的正确性?在继续下载之前,有没有办法下载特定文件,以仅查看是否有新版本。

2 个答案:

答案 0 :(得分:2)

Gitlab为此提供了一个REST API。

您可以使用curl从存储库中获取文件:

curl https://gitlab.com/api/v4/projects/:id/repository/files/:filename\?ref\=:ref

例如:

curl https://gitlab.com/api/v4/projects/12949323/repository/files/.gitignore\?ref\=master

如果您的存储库不公开,则还需要通过添加--header 'Private-Token: <your_access_token>'来提供访问令牌。


链接:

您可以检查如何找到存储库api ID here

Api documentation

More on tokens

还有一个python library使用此api。

请注意,这是GitLab特定的解决方案,不适用于其他主机。

答案 1 :(得分:1)

为了扩展另一个答案,(现在?我不知道何时添加了此功能)可以只获取原始文件而不是具有文件 base64 编码的 json。

来自documentation

端点:GET /projects/:id/repository/files/:file_path/raw

示例:

 curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/13083/repository/files/path%2Fto%2Ffile%2Efoo/raw?ref=master"

请注意,在示例中,文件的完整路径是 URL 编码的,指向 path/to/file.foo