git diff失败了"致命:坏对象$ hash HEAD"

时间:2017-09-05 21:20:57

标签: git

我正在新节点上运行Jenkins作业。无论是重新克隆存储库还是从另一个工作节点复制存储库,我都会得到:

$ git diff --name-only 27b9a8a4b0269d3796defe00ff56eb835fd3d84b HEAD
fatal: bad object 27b9a8a4b0269d3796defe00ff56eb835fd3d84b
$

关于StackOverflow的其他答案(其中大部分是"坏对象HEAD"而不是我的情况"坏对象$ hash HEAD"),我试过:

$ git fsck --full
Checking object directories: 100% (256/256), done.
Checking objects: 100% (213374/213374), done.
$ git status
HEAD detached at b08bd7495
nothing to commit, working tree clean
$ git log --raw --all | fgrep 27b9a8a4b
$

散列27b9a8a4b ...不会出现在git log输出的任何地方。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

Mea culpa ...我复制了一个Jenkins工作,该工作引用了我自己的存储库分支,但是我首先复制然后手工克隆的存储库是主存储库。获得正确的存储库解决了这个问题。

答案 1 :(得分:0)

可能是类似于“Jenkins Invalid Git Revisions”的情况,其中Jenkins记忆的lastBuiltRevision引用了不存在的SHA1。

SHA1可能不再存在,因为新git push --force新历史记录取代了之前的历史记录,导致该特定SHA1过时。