由于分支已经存在,git checkout 失败。

4
我正在尝试检出以前成功检出的分支,但现在无法检出。这里是我收到的不同信息。简单的解决方法是重置我的文件夹,执行git initgit clone,但是我不想重置我的git文件夹,因为我设置了git钩子(post-checkoutpost-merge等)。如何在不重置所有内容的情况下再次使其正常工作? fatal: A branch named 'stage' already exists. 致命错误:已经存在名为'stage'的分支。 git fatal: reference is not a tree Git致命错误:引用不是树 error: refs/heads/stage does not point to a valid object! 错误:refs/heads/stage没有指向有效的对象! fatal: bad object stage 致命错误:坏物体stage
2个回答

7

解决这个问题的干净方法是删除你在.git/refs/heads/your_branch_name中损坏的分支。


1
在Git中,分支只是一个指针。该指针指向分支中当前提交的SHA-1,并且此信息存储在刚删除的文件中:.git/refs/heads/<your_branch_name> 如果您希望验证您的存储库不再包含任何松散对象(悬挂)或未到达的分支,请使用以下命令进行检查:
git fsck --full

我得到了很多“悬空的 blob”,我应该怎么处理它们? - vintagexav
基本上没有什么问题,如果需要的话,您可以从那些悬挂的文件中恢复“丢失”的数据。 - CodeWizard
1
你可以运行 git cat-file -p <SHA-1> 命令,然后你就能看到内容了。 - CodeWizard
很好,如果我想要摆脱悬空的数据,那么它在哪里,是在.git文件夹内吗? - vintagexav
你必须运行 git gc,但除非你确切地知道它的作用,否则不要这样做。将其保留原样。 - CodeWizard
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接