Eclipse中的Egit丢失树形结构。

6
看起来我有一个缺失的树错误。公平地说,我刚刚在git上搞砸了我的本地文件,感到沮丧,然后从远程主机克隆并完全删除了我的存储库。现在我得到了以下错误。我做的第一件事是为我的工作创建一个本地分支。
如果我没有删除所有东西,我可能可以恢复很多工作,但嘿,过去式-对吧?(这可能显示了我现在在git和我的项目中的状态...)
如果有任何区别,我正在制作一个Android项目。
我正在阅读this帖子,它似乎很有帮助,但我不知道如何找到我的“a30df1173f14dea24df661f1eef749fed2f4e1ed”SHA1散列值。
执行
git ls-tree a30df1173f14dea24df661f1eef749fed2f4e1ed
会给我以下结果。
100755 blob 2851ba4fdf2a134f8fc97fd60b3045b73cd6039b    .DS_Store
100755 blob 3f9691c5dda29b09cb96060fd6ec7017f6c671d2    .classpath
100755 blob c50d3b4fe2f6221db617840561dc94d7690bb883    .gitignore
100755 blob 6b58f1723a252cfd314d108fadac4b71a4209c1c    .project
100755 blob 39f00018845d776de324707090d26c5153720e22    AndroidManifest.xml
100755 blob 94a9ed024d3859793618152ea559a168bbcbb5e2    COPYING
100755 blob c1853e4c312a938d5890f5f4e0844782429ba11e    default.properties
040000 tree 423accda532f8788f916b26b863ddf32e2896aa6    docs
160000 commit 0000000000000000000000000000000000000000  eagle vision
100755 blob 424f2604203eabd2310165b143b430326aa87ee7    ic_launcher-web.png
040000 tree 2b83cd828cd11a11e84a2d8f646dfa40de109827    libs
100644 blob 8a7b1fac8f8c12e925e56776f225730c4712f92a    lint.xml
040000 tree c0182f719fccf5fc8b0d7658c3d15fe4deac0d9e    plugins
100755 blob f2fe1559a217865a5454add526dcc446f892385b    proguard-project.txt
100755 blob 9ae01de96458dbded45d2a442c09c0f4d33e473a    project.properties
040000 tree 3c9446b3bb23eebe80942992ee03e01a7390ba80    res
040000 tree 895e957ccc4ee642127c25a3481d784302e44a70    src

其中鹰眼视觉似乎很奇怪,有那么多个0:

160000 commit 0000000000000000000000000000000000000000 鹰眼视觉

不太确定我在这方面的想法。 尝试查看git faq并没有什么用。

以下是整个错误信息:

eclipse.buildId=v22.0.0-675183
java.version=1.7.0_21
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments:  -product com.android.ide.eclipse.adt.package.product
Command-line arguments:  -os linux -ws gtk -arch x86_64 -product com.android.ide.eclipse.adt.package.product

Error
Sun Oct 13 21:11:59 CDT 2013
Missing tree 2ec4e5b3e0e3d9ccc766fd1ed0dccaedcef3e53a

org.eclipse.jgit.errors.MissingObjectException: Missing tree 2ec4e5b3e0e3d9ccc766fd1ed0dccaedcef3e53a
    at org.eclipse.jgit.storage.file.WindowCursor.open(WindowCursor.java:127)
    at org.eclipse.jgit.treewalk.CanonicalTreeParser.reset(CanonicalTreeParser.java:201)
    at org.eclipse.jgit.treewalk.TreeWalk.parserFor(TreeWalk.java:984)
    at org.eclipse.jgit.treewalk.TreeWalk.addTree(TreeWalk.java:468)
    at org.eclipse.egit.core.synchronize.GitSyncCache.loadDataFromGit(GitSyncCache.java:130)
    at org.eclipse.egit.core.synchronize.GitSyncCache.getAllData(GitSyncCache.java:85)
    at org.eclipse.egit.core.synchronize.GitSyncCache.getAllData(GitSyncCache.java:63)
    at org.eclipse.egit.core.synchronize.GitResourceVariantTreeSubscriber.refresh(GitResourceVariantTreeSubscriber.java:180)
    at org.eclipse.team.core.subscribers.Subscriber.refresh(Subscriber.java:466)
    at org.eclipse.egit.core.synchronize.GitSubscriberMergeContext.handleRepositoryChange(GitSubscriberMergeContext.java:142)
    at org.eclipse.egit.core.synchronize.GitSubscriberMergeContext.access$0(GitSubscriberMergeContext.java:133)
    at org.eclipse.egit.core.synchronize.GitSubscriberMergeContext$1.indexDiffChanged(GitSubscriberMergeContext.java:68)
    at org.eclipse.egit.core.internal.indexdiff.IndexDiffCache.notifyListeners(IndexDiffCache.java:98)
    at org.eclipse.egit.core.internal.indexdiff.IndexDiffCache.access$0(IndexDiffCache.java:89)
    at org.eclipse.egit.core.internal.indexdiff.IndexDiffCache$1.indexDiffChanged(IndexDiffCache.java:84)
    at org.eclipse.egit.core.internal.indexdiff.IndexDiffCacheEntry.notifyListeners(IndexDiffCacheEntry.java:425)
    at org.eclipse.egit.core.internal.indexdiff.IndexDiffCacheEntry.access$8(IndexDiffCacheEntry.java:417)
    at org.eclipse.egit.core.internal.indexdiff.IndexDiffCacheEntry$5.run(IndexDiffCacheEntry.java:358)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
1个回答

2
"160000"是用于记录子模块的特殊条目
SHA1等于40个零意味着子模块已被删除(请参阅git-submodule.sh)或处于未知状态中。
当你将某个东西与工作树状态进行比较,而且工作树状态是脏的时候,我们总是显示0{40}来表示“它是脏的,我们不知道那个东西的对象名称是什么,直到你实际运行git-update-index(或git-add)它”(在那一点上它就不再脏了)。 对于blob(无论是常规文件还是符号链接),这样做有一个优点,就是不必运行hash-object来获取如果您实际上执行git-add会创建的对象的对象名称。 当我们检查它是否脏的时候,我们已经执行了lstat(2)并知道它的类型,因此我们可以显示模式位。所以你会看到100644、100755或120000用于blob。类似地,对于子模块也是如此。 对于子模块,我们可以从$sub/.git/HEAD中读取值,但在工作树侧(通常是右侧,除非您使用-R),显示0{40}更加一致。
请检查您是否有一个.git/modules/asubmodule/HEAD文件。
或者尝试清理您的子模块条目,然后将该子模块重新声明为eagle-vision URL。
但是,您缺失的树可能与该条目无关。

我按照清理子模块条目的链接进行操作,但是我甚至没有得到... - user1741874
@xphill64x,你能试一下 git rm eagle vision 吗? - VonC
git rm 'eagle vision' 没有匹配到任何文件。 - user1741874
@xphill64x 然后执行 git rm --cached 'eagle vision' - VonC
仍未找到。在 git fsck 中,我收到了有关另一个提交中错误电子邮件的额外错误。我已经找到了有问题的标签 [extra <],但我不知道如何编辑提交;有建议吗? - user1741874

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接