git fetch 失败并显示“致命:git upload-pack:不是我们的参考 a639...”,第二次成功

Ale*_*uss 5 git git-submodules

我们有一个包含各种子模块的 git 存储库。有一个主存储库的旧克隆,在运行时我们会重复出现以下错误git fetch

fatal: remote error: upload-pack: not our ref a63912a948cf1ce4c700c16b3417e89287f61f63
fatal: git upload-pack: not our ref a63912a948cf1ce4c700c16b3417e89287f61f63
Run Code Online (Sandbox Code Playgroud)

此后第二次运行时git fetch,错误消失。

我当前的假设是旧克隆(或正在获取的某些分支)包含对子模块中提交的引用,这些子模块由于某种原因(变基?)已从源中消失。我知道这种情况可能会发生,但是我如何找到特定的悬空引用,以便我可以修复它?

旧的克隆位于我们用于设置测试的基本映像中,因此我可以完美地重现该错误,即使它在每次尝试时都消失了。然而,我不愿意通过在我们的脚本中散布git fetch || git fetch或类似的黑客行为来忽略这个问题。

那么,我如何找出主存储库中的哪个提交引用了丢失的引用呢a63912... ?更一般地说,有没有一种方法可以对存储库执行完整性检查,从而可以预先捕获这些错误?