Git Can';不要查看特定的分支

Git Can';不要查看特定的分支,git,repository,branch,git-checkout,Git,Repository,Branch,Git Checkout,我在我的存储库中基于创建了几个分支 经过长时间的开发,当我使用git-bashbranch命令时,它告诉我 $ git branch develop f7-body-force f8-eos f9-contact-angle * f9-junk master 分支f9垃圾源于f9接触角。现在f9垃圾已完成,我想将其合并回f9接触角,但当尝试签出f9接触角时,git出现以下错误: $ git checkout f9-contact-angle fatal: referen

我在我的存储库中基于创建了几个分支

经过长时间的开发,当我使用git-bash
branch
命令时,它告诉我

$ git branch
  develop
  f7-body-force
  f8-eos
  f9-contact-angle
* f9-junk
  master
分支
f9垃圾
源于
f9接触角
。现在
f9垃圾
已完成,我想将其合并回
f9接触角
,但当尝试签出
f9接触角
时,git出现以下错误:

$ git checkout f9-contact-angle
  fatal: reference is not a tree: f9-contact-angle
检出其他一些分支也会产生相同的错误。所以,我尝试了VisualStudioGit。检查
f9接触角时再次出现错误:

An error occurred.
Detailed message: The tip of branch 'develop' is null.
There's nothing to checkout.

问题出在哪里?

听起来您的存储库已损坏(存储驱动器上的bitrot、意外删除的文件等)

git rev parse branchname
应该告诉您提交的分支指向哪个分支。理论上,您应该能够直接检查commit,并使用类似于
git cat file-t commithash的命令来获取对象的类型(“引用不是树”)

运行
git fsck
将对存储库的数据库文件进行完整性检查。通常它只打印良性消息,如“悬挂的blob/tree/commit”,但如果您得到“无效的sha1指针”或“丢失的commit”,那么您的repo将被破坏。您可能需要从备份(或远程存储库)进行恢复


远程存储库不应受到本地损坏数据库的影响(您将无法推送)。

git rev parse f9 contact angle
的输出是什么?哈希:
be7f7eee1032b73019cd870e60d6b8ae661e0f6d
您可以直接签出哈希吗?尽管如此,如果分支名称解析为散列,那么签出分支名称应该可以正常工作,没有问题,同样的错误:
致命:引用不是树:be7f7eee1032b73019cd870e60d6b8ae661e0f6d
听起来您的存储库已损坏。不是树…请尝试使用git cat文件-t be7f7eee103
它应该打印
commit
。git fsck告诉你什么?fsck将对存储库的对象数据库进行完整性检查。