如何从 GitLab 下载单个文件?

6 python linux git

我知道可以获取然后使用带有路径/到/文件的结帐来下载该特定文件。

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

我对 git fetch/checkout 的理解是否正确?有没有一种方法可以下载特定文件,以便在继续下载之前查看是否有新版本。

Chr*_*n W 21

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

文档中:

端点: 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"
Run Code Online (Sandbox Code Playgroud)

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

  • “第三个%2F”确实是一个%2E,它是一个点。示例中是 file.foo,而不是 file/foo。 (2认同)

ja2*_*142 11

Gitlab 有一个休息 API。

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

curl https://gitlab.com/api/v4/projects/:id/repository/files/:filename\?ref\=:ref
Run Code Online (Sandbox Code Playgroud)

例如:

curl https://gitlab.com/api/v4/projects/12949323/repository/files/.gitignore\?ref\=master
Run Code Online (Sandbox Code Playgroud)

如果您的存储库不是公开的,您还需要通过添加--header 'Private-Token: <your_access_token>'.


链接:

您可以在此处查看如何查找存储库 api id 。

API 文档

更多关于代币

还有一个使用这个api的python库

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

  • 这很有帮助,但是它返回了一个带有文件元数据的 Json 从存储库获取原始文件 GET /projects/:id/repository/files/:file_path/raw 但是它返回了文件的内容,这是好的,但没有下载实际文件。有没有办法通过 api 下载实际的文件夹/文件 (2认同)