在提交过程中断电后,我的git存储库中的一个分支被破坏了。我做了git fsck --full
并删除了所有空对象文件,直到fsck
给了我:
Checking object directories: 100% (256/256), done.
Checking objects: 100% (894584/894584), done.
error: refs/heads/git-annex does not point to a valid object!
Checking connectivity: 862549, done.
然后我使用git fsck --lost-found
在git-annex
分支上找到我最后一个好的悬挂提交。我查了一下。
我希望这是我的替代git-annex
HEAD。我试过git checkout -b git-annex
,但得到了分支已经存在。所以我尝试了git branch -d git-annex
,但得到了error: Couldn't look up commit object for 'refs/heads/git-annex'
。
如何摆脱损坏的git-annex
分支以将其设置为我想要的提交?我已经尝试删除.git/refs/heads/git-annex
,但这不起作用。感谢。
答案 0 :(得分:3)
这对我有用(在“作弊”之后插入一个破碎的分支,并在尝试删除它时看到同样的错误):
git branch -f broked HEAD # or some other valid point
git branch -d broked
第二个命令抱怨,因为它从.git / packed-refs中删除了破坏的引用(我认为如果删除.git / refs / heads / git-annex是无益的,我必须这样做)。 (但是分支名称“git-annex”让我想知道你是否正在使用git-annex,就像在存储库之外存储大文件一样。我自己没有使用它,我不确定这是否会改变任何东西。)