【发布时间】:2014-08-18 17:40:57
【问题描述】:
我的 Mac 上有一个由 Xcode 管理的本地 git 存储库。我最近创建了一个新分支,并从那时起进行了很多更改。我正要对这个新分支执行第一次提交,但出现了一个错误对话框:
工作副本“应用名称”未能提交文件。
错误:无效对象 100644
888688965... 用于“支持文件/animage.png”
错误:构建树时出错
我在 Internet 上搜索了解决方案,发现 this question 似乎是同一个问题。我尝试了这个问题的两个答案,但都没有为我解决问题。我已经尽我所能解决问题,但没有成功。
- 我尝试按照答案建议查找有问题的文件,但 /repo/.git/objects/88 中没有文件。我还查看了备份(我有 Time Machine 每小时备份),但该文件夹中从来没有文件。
- 我尝试了
git reset --hard并删除了未提交的更改,但这样做之后我无法提交简单的更改。显示完全相同的错误消息。 - 我试图删除错误消息中引用的图像,但下次我尝试提交相同的错误时显示引用不同的图像。删除所有图像后,它开始列出代码文件。
- 我尝试创建一个新分支并提交到该分支,但出现了同样的错误。
- 我切换到我之前在该项目上工作的另一个分区(文件通过 Dropbox 同步,这可能是问题的原因)并尝试提交,但遇到相同的错误消息。
- 我最终决定将整个项目恢复到更早的时间点,我在两个月前甚至还没有做任何分支之前就回去了,但仍然一个简单的提交拒绝工作。这让我相信涉及外部因素,项目文件夹之外的东西。我知道它当时有效,所以这让我很困惑。这是出现的错误:
工作副本“应用名称”未能提交文件。
致命:无法读取树 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
尝试克隆 repo 后,记录如下:
错误:无法读取 appname/Images.xcassets/AppIcon.appiconset/Icon-Small-1.png (86672e7aa0d5ad36563feef30c15a5d31f921802) 的 sha1 文件
错误:无法读取 appname/Images.xcassets/AppIcon.appiconset/Icon-Small.png 的 sha1 文件 (86672e7aa0d5ad36563feef30c15a5d31f921802)
错误:无法读取 appname/Images.xcassets/LaunchImage.launchimage/DefaultPortrait@2x.png (7d97eba35cf392ddb1a705109b721fcd6a20ea29)
的 sha1 文件
错误:无法读取 appname/appname-Prefix.pch 的 sha1 文件 (82a2bb45076d290ce7461b28d5a579e649777779)
致命:无法签出工作树
警告:克隆成功,但结帐失败。
此时我愿意做任何事情来避免不得不丢弃整个 git 存储库并重新开始。我不想失去我的分支和历史。 我该如何解决这个问题? 我有一个与我第一次发现错误时完全相同的项目目录的工作副本以及该项目整个历史的 Time Machine 备份。感谢您提出任何建议。
【问题讨论】:
标签: git version-control