如何用Curl获取Git LFS仓库的完整文件而非指针文件?
解决Git LFS指针文件下载问题
你遇到的问题是因为GitLab的/repository/files/.../raw API端点返回的是Git仓库中存储的原始内容——而LFS文件在Git仓库里仅保存指针,实际文件内容存储在LFS专属存储中。以下两种方法可以获取完整文件:
方法1:使用GitLab LFS对象API直接下载
从你拿到的LFS指针中提取oid值(即sha256:16c15c7dfd9fe14c6cb59a4badfa82bad104243e5653da74382e526dbc6b33f0),然后调用GitLab的LFS对象下载接口:
curl --header "PRIVATE-TOKEN: glpat-123abc" "http://car.wg:8100/api/v4/projects/67/lfs/objects/sha256:16c15c7dfd9fe14c6cb59a4badfa82bad104243e5653da74382e526dbc6b33f0/download" --output 20220531.tar.gz
注意:oid必须带上sha256:前缀,这是GitLab LFS API的要求。
方法2:使用git lfs命令拉取
如果本地已克隆目标仓库,可通过git lfs命令直接拉取实际文件:
- 配置LFS认证(将私有令牌作为用户名,密码留空):
git config lfs.http://car.wg:8100/your-group/your-project.git/info/lfs.access basic git config lfs.http://car.wg:8100/your-group/your-project.git/info/lfs.username glpat-123abc git config lfs.http://car.wg:8100/your-group/your-project.git/info/lfs.password ""
- 拉取指定LFS文件:
git lfs pull --include="v001/20220531.tar.gz"
如果尚未克隆仓库,先执行git clone http://car.wg:8100/your-group/your-project.git,再完成上述配置和拉取步骤。
内容的提问来源于stack exchange,提问作者Nika Kachashvili
相关产品推荐
相关产品推荐

