合并PR至DEV分支时ArchiveFiles@2任务报错,推送Azure DevOps正常
问题解决:ArchiveFiles任务合并PR时出现Git锁文件读取警告
问题原因
PR合并至DEV分支触发的构建中,Git自动执行垃圾回收(gc)操作时临时生成了.git/gc.pid和.git/gc.log.lock锁文件,ArchiveFiles任务尝试打包包含这些临时文件,但此时文件处于锁定状态无法读取;而推送代码时的构建未触发Git gc或gc已完成,因此无此报错。
解决方案
1. 打包时排除.git目录
修改ArchiveFiles任务配置,添加排除规则跳过Git版本控制相关文件,这是最直接的解决方式:
- task: ArchiveFiles@2 displayName: 'Archive Files' inputs: rootFolderOrFile: '$(buildRootDirectory)' includeRootFolder: false archiveType: 'zip' archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip' replaceExistingArchive: true exclude: '.git/**' # 添加此行排除.git下所有内容
2. 提前清理Git临时锁文件
在ArchiveFiles任务前添加步骤,手动清理可能存在的锁文件,根据构建代理系统选择对应命令:
- Linux/macOS代理:
- bash: | rm -f $(buildRootDirectory)/.git/gc.pid $(buildRootDirectory)/.git/gc.log.lock displayName: 'Clean Git GC lock files'
- Windows代理:
- powershell: | Remove-Item -Path "$(buildRootDirectory)/.git/gc.pid", "$(buildRootDirectory)/.git/gc.log.lock" -Force -ErrorAction SilentlyContinue displayName: 'Clean Git GC lock files'
3. 禁用Git自动垃圾回收
在构建初始化阶段禁用Git自动gc,避免临时锁文件生成:
- bash: | git config gc.auto 0 displayName: 'Disable Git auto GC' workingDirectory: '$(buildRootDirectory)'
内容的提问来源于stack exchange,提问作者Manoxs
相关产品推荐
相关产品推荐

