修复损坏的git存储库.没有默认修订版'HEAD'

mgi*_*son 8 git

抱歉模棱两可的标题.如果有人能想出更好的东西,请编辑一下让我知道.

最近,我删除了一个git存储库,并从服务器中检出了一个新的副本.不幸的是,当我这样做时,我忘记了我正在使用git-new-workdir(我以为我克隆了我的回购检查两次).现在我在"workdir"中无能为力:

$ git log
fatal: bad default revision 'HEAD'
Run Code Online (Sandbox Code Playgroud)

并且git status给予了比它应该做的更多的改变.有没有人对我如何解决这个问题有任何想法?

更多信息:

跑步git fsck给我以下内容:

$ git fsck
notice: HEAD points to an unborn branch (dipole_fix)
missing blob d92f4a4f53c95c375146d9623910d8ec214aa02f
missing blob 7d81095605082af3252a47b47d81e48d4a78a668
missing blob f5d21b7785c4bca4efaa91ce5ef5a8bd82d98792
missing blob 79d3ad61db697ca7e89dbfd089a472dab0a7851b
missing blob 2cf0e64cbc0a816d7dc1b26fef43c2eb7c4fb6ac
Run Code Online (Sandbox Code Playgroud)

对于它的价值,我确实有一个带dipole_fix分支的远程分支.它应该(相对)是最新的.

更新1 - 查看.gitworkdir 中的内容,似乎我有一些悬挂的符号链接.

lrwxrwxrwx 1 mgilson mgilson     39 2012-04-26 10:43 remotes -> /orig_repo/.git/remotes
lrwxrwxrwx 1 mgilson mgilson     40 2012-04-26 10:43 rr-cache -> /orig_repo/.git/rr-cache
lrwxrwxrwx 1 mgilson mgilson     35 2012-04-26 10:43 svn -> /orig_repo/.git/svn
Run Code Online (Sandbox Code Playgroud)

更新2 - Naievly连接remotes/orig_repo/refs/remotes似乎摆脱"坏头"的问题,但现在git status给了我:

error: unable to find d92f4a4f53c95c375146d9623910d8ec214aa02f
error: unable to find d92f4a4f53c95c375146d9623910d8ec214aa02f
error: unable to find f5d21b7785c4bca4efaa91ce5ef5a8bd82d98792
error: unable to find f5d21b7785c4bca4efaa91ce5ef5a8bd82d98792
error: unable to find 79d3ad61db697ca7e89dbfd089a472dab0a7851b
error: unable to find 79d3ad61db697ca7e89dbfd089a472dab0a7851b
Run Code Online (Sandbox Code Playgroud)

Bal*_*Pal 3

HEAD 很容易修复,只是git checkout一些东西。(或者您甚至可以使用编辑器编辑 .git/HEAD,放置 ref: 或 hit hash)。或者创建缺少的 dipole_fix本地分支。(你可以查看刚才提到的文件来看看它指向哪里......)

悬空链接:修复或删除它们。