将断开的git分支设置为分离的头部

时间:2013-08-26 15:07:07

标签: git

在提交过程中断电后,我的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-foundgit-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,但这不起作用。感谢。

1 个答案:

答案 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,就像在存储库之外存储大文件一样。我自己没有使用它,我不确定这是否会改变任何东西。)