Azure DevOps Git仓库SSH下载LFS文件失败但HTTPS正常问题问询
问题原因
这一问题本质是Azure DevOps对SSH协议下的Git LFS请求兼容不足导致的:
Git LFS拉取文件时需要向服务端发起批量请求获取文件下载地址,当仓库远程地址使用SSH协议时,旧版Git LFS会默认尝试向SSH端点发起LFS批量请求,但Azure DevOps的LFS服务未适配该类SSH请求,返回的响应内容不符合JSON格式要求,因此触发unexpected end of JSON input报错。
而HTTPS协议下的LFS请求是Azure DevOps原生适配的模式,请求和响应流程完全符合Git LFS的规范,因此可以正常拉取LFS文件。
解决方法
- 方法1:全局配置Git LFS强制走HTTPS传输
执行以下命令即可,配置生效后哪怕远程仓库使用SSH协议,LFS文件也会自动走HTTPS通道拉取,会自动复用本地存储的Azure DevOps HTTPS凭据:
git config --global lfs.transport https
如果需要仅针对单个仓库配置,去掉命令中的--global参数,在对应仓库目录下执行即可。
- 方法2:升级Git LFS到最新版本
新版本Git LFS已经适配了Azure DevOps的SSH+LFS逻辑,会自动将LFS请求切换到HTTPS通道,无需额外配置。执行以下命令即可升级:
git lfs update
如果上述命令执行失败,直接下载最新版Git LFS安装包覆盖安装即可。
- 方法3:克隆时临时跳过LFS拉取,完成后手动拉取
如果不想修改全局配置,可以在克隆时跳过LFS smudge步骤,克隆完成后手动切换LFS传输协议再拉取文件:
Linux/macOS 执行:
GIT_LFS_SKIP_SMUDGE=1 git clone <ssh-url> az-lynx cd az-lynx git config lfs.transport https git lfs pull
Windows 执行:
set GIT_LFS_SKIP_SMUDGE=1 git clone <ssh-url> az-lynx cd az-lynx git config lfs.transport https git lfs pull
内容的提问来源于stack exchange,提问作者minhtuanta
相关产品推荐
相关产品推荐

