我不能做出改变:
$ git commit
error: invalid object 100644 13da9eeff5a9150cf2135aaed4d2e337f97b8114 for 'spec/routing/splits_routing_spec.rb'
error: Error building trees
Run Code Online (Sandbox Code Playgroud)
我到目前为止尝试过:
$ git fsck | grep 13da
missing blob 13da9eeff5a9150cf2135aaed4d2e337f97b8114
Run Code Online (Sandbox Code Playgroud)
并且:
$ git prune
error: Could not read 1394dce6fd1ad15a70b2f2623509082007dc5b6c
fatal: bad tree object 1394dce6fd1ad15a70b2f2623509082007dc5b6c
Run Code Online (Sandbox Code Playgroud)
并且:
$ git fsck | grep 13da
missing blob 13da9eeff5a9150cf2135aaed4d2e337f97b8114
Run Code Online (Sandbox Code Playgroud)
但没有任何帮助.我应该删除文件,提交并重新引入吗?如果它带回git提交,我愿意失去一点历史.
Ale*_*lin 91
此错误意味着您有一个带有哈希的文件13da9eeff5a9150cf2135aaed4d2e337f97b8114
,并且该哈希不存在.git/objects/../
,或者它是空的.发生此错误时,我在错误中只有这个哈希,没有文件路径.然后我试图做git gc --auto
和git reset --hard
.在其中一个命令(这些命令没有解决我的问题)之后,我得到了触发错误的文件的路径.
您只需要生成对象哈希:
git hash-object -w spec/routing/splits_routing_spec.rb
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息,请参阅文档.在文档中,还有一种修复此错误的方法.
PS这是唯一对我有帮助的方式.
Lop*_*Sae 16
您的git存储库中可能有一个损坏的对象.
如果您有此存储库的远程克隆或其他克隆,您可以从那里获取有问题的文件,并在本地存储库中替换它.
您想要的文件位于:
/repo/.git/objects/13/da9eeff5a9150cf2135aaed4d2e337f97b8114
Run Code Online (Sandbox Code Playgroud)
Pra*_*nav 14
这篇Medium 文章中提到的一个简单技巧解决了我遇到类似的“无效对象”和“构建树错误”问题的情况。解决方案非常简单:
\ngit hash-object -w <file-name-which-is-creating-problem>\n
Run Code Online (Sandbox Code Playgroud)\n之后,git 将为哈希不匹配的文件创建 Sha1,并且其存储库将被修复。
\n现在我可以使用git add *
并且git commit -m
没有任何问题。那\xe2\x80\x99就是它。
注意:如果您不确定自己在做什么,请创建一个副本(也称为备份)。
\nTom*_*ald 13
git reset --hard
应该使您的存储库恢复正常,但您将丢失未提交的更改.
小智 8
如果您的更改添加了有问题的文件,您只需将其从索引中删除并再次添加:
git reset <file>
git add <file>
Run Code Online (Sandbox Code Playgroud)