无法检查特定分支

时间:2017-03-05 16:05:11

标签: git repository branch git-checkout

我根据Vincent Driessen's model在我的存储库中创建了几个分支。

经过长时间的开发,当我使用git bash branch命令时,它会显示我,

$ git branch
  develop
  f7-body-force
  f8-eos
  f9-contact-angle
* f9-junk
  master

分支f9-junk来自f9-contact-angle。现在f9-junk已完成,我想将其合并回f9-contact-angle,但在尝试查看f9-contact-angle时,git会出现此错误:

$ git checkout f9-contact-angle
  fatal: reference is not a tree: f9-contact-angle

检查其他一些分支也会产生相同的错误。所以,我尝试了Visual Studio Git。签出f9-contact-angle

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

有什么问题?

1 个答案:

答案 0 :(得分:1)

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

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

运行git fsck将对存储库的数据库文件进行完整性检查。通常它只打印良性消息,例如“悬空blob / tree / commit”,但是如果你得到“无效的sha1指针”或“缺少提交”,那么你的repo就会被破坏。您可能需要从备份(或远程存储库)进行还原。

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