致命错误后重新创建Git Ref

时间:2012-02-29 19:05:45

标签: php git branch fatal-error git-log

我最近不得不执行硬重启,当我尝试访问特定分支时,我现在收到git中的错误(访问其他分支时不会发生这种情况):

$git checkout branchName
fatal: failed to read object ebca165c3ec7ecd7124f41983dd264e4e1dc0125: Invalid argument

问题类似于此处描述的问题:How to restore a corrupted git repository?,但不同之处在于我目前不在该分支上执行git status。另外,如果我拨打git reflog,我会收到相同的错误消息。

我尝试使用git branch -d branchNamegit branch -D branchName删除相关分支,但没有成功。

显然,我希望保留所有分支和数据,但如果解决方案是删除该特定分支,那么这很好。此外,不知道这是否有帮助甚至是重要的,但在此分支上执行的最后一个操作是rebase

可能的解决方案是重建现有的每个分支的当前引用,不包括无效分支吗?

作为旁注,我目前没有一个我很舒服clone的远程来源,因此需要任何本地解决方案。此外,我正在使用PHP,以防任何原因。

感谢。


编辑:

正在运行git fsck --full我收到以下消息:

$git fsck --full
fatal: failed to read object 687f624bd239de165307d18a8904a77adb32c8a1: Invalid argument

...这很奇怪,因为它似乎引用了不同的哈希值。

1 个答案:

答案 0 :(得分:1)

我终于找到了如何回答这个问题......

只需进入文件夹.git并删除refs/heads/BadBranch

即可

这允许branch es的其余部分正常工作,而只会丢失已损坏的branch中的信息。