如何将 Git LFS 与 Azure Repos 和 Pipelines 结合使用

问题描述 投票:0回答:4

我有一个在 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'.
git azure-pipelines git-lfs azure-repos
4个回答
49
投票

您必须使用 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


1
投票

不幸的是@4c74356b41的answer对我不起作用。我和@Haroon 有同样的问题

我使用

checkout
配置了
lfs
步骤,但文件仍保留带有哈希值的文本文件。

解决方案是手动运行

git lfs fetch
git lfs pull

  steps:
  - checkout: self
    lfs: true

  - script: |
     git lfs fetch
     git lfs pull
    displayName: git-lfs

0
投票

我将添加此答案以宣传 Naxin 自 2023 年 5 月起的评论。

对我有用的解决方案很简洁,

您也可以删除已签出的损坏源(包括 .git 文件夹),然后重新运行管道(添加 lfs: true 后)


-1
投票

我认为这个错误非常简单。 您尚未在管道中提供 git 凭据。

更重要的是,我能问一下为什么使用 git 来生成二进制文件吗? 你打算如何对 git 不理解的东西进行版本控制? 我的意思是,您打算如何在二进制文件上使用 diff 和 merge 等功能?

© www.soinside.com 2019 - 2024. All rights reserved.