【问题标题】:git diff failing with "fatal: bad object $hash HEAD"git diff 失败并显示“致命:坏对象 $hash HEAD”
【发布时间】:2018-02-14 06:05:24
【问题描述】:

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

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

按照 StackOverflow 上的其他答案(其中大部分是关于“bad object HEAD”而不是我的情况“bad object $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 的输出中。

有什么建议吗?

【问题讨论】:

  • 我不确定到底是什么问题,但我确信这是 Jenkins 的问题,而不是 Git 的问题。更准确地说,您的 Jenkins 已经锁定了一些实际上不存在的哈希 ID。不知何故,你需要促使 Jenkins 获得一个好的哈希 ID,无论对 Jenkins 来说“好”是什么,并停止传递这个错误的 ID。

标签: git


【解决方案1】:

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

【讨论】:

  • 很好,比我的回答更准确。 +1
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2013-12-14
    • 2014-11-05
    • 2014-03-05
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    相关资源
    最近更新 更多