致命错误后重新创建Git引用


Recreate Git Ref after Fatal Error

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

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

这个问题与这里描述的问题类似:如何恢复损坏的git存储库?,但不同之处在于我当前不在该分支上执行CCD_ 1。此外,如果我调用git reflog,我会收到相同的错误消息。

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

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

一个可能的解决方案是从存在的每个单独分支重构当前ref,不包括无效分支吗?

顺便说一句,目前我还没有一个可以轻松使用clone的远程源,因此需要任何本地解决方案。此外,我正在使用PHP,以防由于任何原因而引起的问题。

谢谢。


编辑:

运行git fsck --full时,我收到以下消息:

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

这很奇怪,因为它似乎指的是不同的散列。

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

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

这允许其余的git status0es正常工作,同时只丢失损坏的branch的信息。