我有一个在 Azure Repos 中使用 Git LFS 的项目,其中使用 Git LFS 签入了多个二进制图像文件。当我的 Azure Pipelines 构建执行
git pull
时,图像文件不会从 Git LFS 中提取,我只剩下几个零字节图像文件。
我正在使用自定义的自托管 Azure Pipelines 构建服务器,该服务器上安装了最新版本的 Git LFS:
PS C:\rehan> git lfs --version git-lfs/2.7.2 (GitHub; windows amd64; go 1.12.2; git 08a08ae0)
我尝试添加步骤来执行
git lfs install
但这没有帮助。当我登录到构建服务器后手动执行 git lfs pull
时,文件会正确下载。当我在 Azure Pipeline 中将 git lfs pull
作为构建步骤运行时,出现以下错误:
fatal: could not read Username for 'https://foo.visualstudio.com': terminal prompts disabled
batch response: Git credentials for https://foo.visualstudio.com/Bar/_git/Bar not found.
error: failed to fetch some objects from 'https://foo.visualstudio.com/Bar/_git/Bar.git/info/lfs'
Downloading LFS objects: 0% (0/1), 0 B | 0 B/s
##[error]PowerShell exited with code '1'.
您必须使用 https 进行 lfs 才能与 Azure Devops 配合使用,并且在构建时必须进行 LFS 签出:
steps:
- checkout: self # self represents the repo where the initial Pipelines YAML file was found
lfs: true
如果您使用 UI 向导,则会有一个用于签出 lfs 的复选框
https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#checkout
https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/pipeline-options-for-git?view=azure-devops#checkout-files-from-lfs
我将添加此答案以宣传 Naxin 自 2023 年 5 月起的评论。
对我有用的解决方案很简洁,
您也可以删除已签出的损坏源(包括 .git 文件夹),然后重新运行管道(添加 lfs: true 后)
我认为这个错误非常简单。 您尚未在管道中提供 git 凭据。
更重要的是,我能问一下为什么使用 git 来生成二进制文件吗? 你打算如何对 git 不理解的东西进行版本控制? 我的意思是,您打算如何在二进制文件上使用 diff 和 merge 等功能?