我的Mac上有一个由Xcode管理的本地git存储库。我最近创建了一个新分支,并从那时起进行了很多更改。我正要执行我对这个新分支的第一次提交,并出现了一个错误对话框:
工作副本“app name”无法提交文件
错误:无效对象100644
888688965 ... for“Supporting Files / animage.png”
错误:构建树时出错
我搜索了Interwebs的解决方案,发现this question似乎是同一个问题。我尝试了这个问题的两个答案,但都没有为我解决问题。我已经做了我能想到的所有事情来解决问题,但没有成功。
git reset --hard
并删除了未提交的更改,但在执行此操作后,我无法进行简单的更改。显示完全相同的错误消息。工作副本“app name”无法提交文件 致命的:无法阅读树781d ......
跑完git fsck --full
之后,我看到树上有几条破损的链接,很多悬垂的斑点,几个丢失的斑点和两棵失踪的树木。
git for-each-ref --format='%(refname)' | while read ref; do git rev-list --objects $ref >/dev/null || echo "in $ref"; done
的结果:
致命:丢失blob对象'8886889658056c4ce52d46a485933c8df7a4de84'
在refs / heads / UniversalStoryboard中
致命的:丢失blob对象'8886889658056c4ce52d46a485933c8df7a4de84'
在refs / heads / Update1中
致命的:丢失blob对象'8886889658056c4ce52d46a485933c8df7a4de84'
在refs / heads / iOS-8-Update中
致命的:丢失blob对象'8886889658056c4ce52d46a485933c8df7a4de84'
在refs / heads / master
尝试克隆回购后,这是记录的内容:
错误:无法读取appname / Images.xcassets / AppIcon.appiconset / Icon-Small-1.png(86672e7aa0d5ad36563feef30c15a5d31f921802)的sha1文件
错误:无法读取appname / Images.xcassets / AppIcon.appiconset / Icon-Small.png(86672e7aa0d5ad36563feef30c15a5d31f921802)的sha1文件
错误:无法读取appname / Images.xcassets/LaunchImage.launchimage/DefaultPortrait@2x.png(7d97eba35cf392ddb1a705109b721fcd6a20ea29)的sha1文件
错误:无法读取appname / appname-Prefix.pch(82a2bb45076d290ce7461b28d5a579e649777779)的sha1文件
致命的:无法结账工作树
警告:克隆成功,但结帐失败。
此时我愿意做任何事情来防止不得不废弃整个git存储库并重新开始。我不想失去我的分支和历史。 如何解决此问题?我有一个项目目录的工作副本,与我第一次发现错误以及此项目的整个历史记录的Time Machine备份时完全相同。你能提出的任何建议都表示赞赏。
答案 0 :(得分:1)
一个解决办法是:
如果您之前已推送过您的仓库,请尝试克隆远程仓库而不是本地仓库 或者尝试将repo克隆为Time Machine保存。
如果这不起作用,则您有一个broken repo,您可以尝试在“Tree contains duplicate file entries”中公开的一些方法。
答案 1 :(得分:1)
你改变了git版本吗?您是否只使用Xcode附带的那个,或者您在终端中安装了过时的版本?一个可能破坏回购的人。 (尝试' git --version' - current version是2.0.4,并且可以使用自制软件轻松安装。
repo文件夹中是否有任何阻止git工作的奇怪权限?