我根据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.
有什么问题?
答案 0 :(得分:1)
听起来您的存储库已损坏(存储驱动器上的bitrot,意外删除的文件,......)
git rev-parse branchname
应告诉您分支指向哪个提交。从理论上讲,您应该能够直接检查该提交并使用git cat-file -t commithash
之类的命令来获取对象的类型(“引用不是树”)。
运行git fsck
将对存储库的数据库文件进行完整性检查。通常它只打印良性消息,例如“悬空blob / tree / commit”,但是如果你得到“无效的sha1指针”或“缺少提交”,那么你的repo就会被破坏。您可能需要从备份(或远程存储库)进行还原。
远程存储库不应受本地损坏的数据库的影响(您将无法推送)。