git fatal:pack 有 1 个未解决的增量(索引包失败)

git fatal:pack 有 1 个未解决的增量(索引包失败)

我遇到了一个非常奇怪且不太常见的问题,涉及特定的 Windows 构建服务器(Jenkins Slave)。

在詹金斯中,我有一项工作是从特定分支中提取最新代码。

git 尝试执行的实际命令是:

git fetch -t origin +refs/heads/*:refs/remotes/origin/*

运行一个月后,几个小时前,作业突然失败并出现以下错误:

ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway
hudson.plugins.git.GitException: Command "C:\Program Files (x86)\Git\bin\git.exe fetch -t origin +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: fatal: pack has 1 unresolved delta
fatal: index-pack failed

我尝试在网上查找一些关于它的帖子,但什么也没找到……

我已经尝试过的事情:

  1. 卸载git并重新安装
  2. 删除工作区(由于选择了清除选项,因此工作区也会被删除)
  3. 从系统中删除所有工作区
  4. git fsck - 没有有趣的结果
  5. git verify-pack – 没有有趣的结果
  6. git index-pack + 相关的包文件 - 这里也没有有趣的结果

更多(希望是重要的)信息:

  1. 从此服务器,当我通过 CMD/GitBash 工作时 - 同样的问题是仍然存在
  2. 从其他服务器/PC,我能够使用相同的 git Repo 执行此命令,但这给我带来了麻烦......
  3. 使用不同 Git Repo 的其他任务在同一构建服务器上运行流畅。

我迷路了。有人能解释一下吗?

答案1

我仍然不知道这一切混乱的根本原因。

但现在我设法通过以下方式克服了它:

在 Jenkins 作业中,在 Git SCM 配置下,存在以下滞后:

  1. 构建前清理工作空间
  2. 使用浅克隆

移除其中两个即可解决问题。

之后,可以将它们放回去,它仍然可以工作。

诡异的!!!

答案2

我遇到此问题的原因是git clone操作“浅显”,因此没有提交的完整历史记录(因此 fetch 无法看到完整的历史记录来计算增量)。

检查您尝试获取的工作树中的 Git 日志,它不应该有完整的历史记录 - 我的只列出了几个提交,列表中最旧的提交表示它正在为 repo 中的所有文件添加一个“新文件” - 我认为是一个被压缩的文件。

确保没有GIT_DEPTH设置变量,然后

git pull --unshallow

或者

git pull 

并再次尝试获取。

答案3

我遇到了同样的问题。我首先从 master 创建了一个新分支,并检查了从该分支部署是否正常,结果发现可以。因此,我尝试删除 master 分支的工作区(手动删除),这解决了我的问题。

相关内容