![]() |
1
55
似乎有损坏的树对象。你需要从别人那里得到那个东西。希望他们有一个完整的版本。 如果你无法通过猜测哪些文件应该存在来从其他人那里找到有效的版本,那么你可以重新构建它。您可能希望查看对象的日期和时间是否与其匹配。可能是相关的斑点。您可以从这些对象推断树对象的结构。 看看 Scott Chacon's Git Screencasts 关于Git内部。这将向你展示Git是如何在引擎盖下工作的,以及如果你真的被卡住了,不能从别人那里得到这个物体,如何继续做这项侦查工作。 |
![]() |
2
304
我也有同样的问题(不知道为什么)。 此修复程序要求访问存储库的未损坏远程副本,并将保持本地工作副本的完整性。 但它也有一些缺点:
修复从repo上面的父目录执行这些命令(将“foo”替换为项目文件夹的名称):
在Windows上,您需要使用:
现在foo有了它的原版
|
![]() |
3
190
您最好的选择可能是简单地从远程回购(如Github或其他)中重新克隆。不幸的是,您将丢失任何未提交的提交和隐藏的更改,但是您的工作副本应该保持完整。 首先备份本地文件。然后,从工作树的根开始执行此操作:
然后根据需要提交任何更改的文件。 |
![]() |
4
106
在一台虚拟机上工作,在我的笔记本里,电池没电了,出现了这个错误;
我设法让回购只需两个命令就可以重新工作 不会丢掉我的工作 (已修改的文件/未提交的更改)
之后我跑了一个
Git版本1.9.1 记住备份所有您记得的更改,以防此解决方案不起作用,需要更激进的方法。 |
![]() |
5
38
我在写提交消息时计算机崩溃了。重新启动之后,工作树就像我离开它时一样,我能够成功地提交我的更改。
但是,当我试图逃跑时
与大多数其他答案不同,我没有试图恢复任何数据 . 我只需要git停止抱怨空对象文件。 概述
“对象文件”是Git对您关心的真实文件的散列表示。Git认为它应该有哈希版本的
细节可能的选择似乎是
方法1:删除对象文件我尝试的第一件事就是移动对象文件
那不起作用-Git开始抱怨链接断了。接近2。 方法2:修复文件莱纳斯·托瓦尔兹对 how to recover an object file 这为我解决了问题。这里总结了关键步骤。
这将告诉您空对象应该是什么文件的散列值。现在你可以修理它了。
做完这个之后,我检查了一下
|
![]() |
6
12
尝试
这对我很有用。它藏着你没有承诺的任何东西,这就解决了问题。 |
![]() |
7
6
|
![]() |
8
4
我刚刚经历了这个-我的机器在写入git repo时崩溃了,它变得损坏了。我把它修好如下。 我先看看我有多少承诺没有推动远程回购,因此:
如果你不使用这个工具,它是非常方便的-据我所知,在所有操作系统上都可用。这表明我的遥控器缺少两个提交。因此,我单击了指示最新远程提交的标签(通常是
这里是:
然后,我单击以下提交(即远程程序没有的第一个提交)并在那里获取哈希:
然后,我使用这两种方法为这个提交创建一个补丁:
然后我对另一个丢失的提交也做了同样的处理,即我使用了提交之前的哈希和提交本身的哈希:
然后我移动到一个新目录,从远程克隆了repo:
然后,我将补丁文件移到新文件夹中,并应用它们,并用它们确切的提交消息提交它们(这些消息可以粘贴在
这为我恢复了一些东西(注意对于大量提交,可能有一种更快的方法来完成)。不过,我很想知道损坏的repo中的树是否可以修复,答案是它可以。如果修复的repo如上所述可用,请在损坏的文件夹中运行此命令:
你会得到这样的结果:
要进行修复,我将在损坏的文件夹中执行此操作:
也就是说,删除损坏的文件并用一个好的文件替换它。你可能要做几次。最后会有一个你可以跑的地方
因此(至少在我的情况下)一个损坏的树并不意味着未完成的提交将丢失。 |
![]() |
9
3
我也收到了一个损坏的松散对象错误。
我通过进入损坏对象的目录成功地修复了它。我看到分配给那个对象的用户是
不
我的Git用户的。我不知道是怎么回事,但我运行了一个
这可能是解决某些人问题的一个潜在方法,但并非所有问题都必须解决。 |
![]() |
10
2
我的(Windows)机器决定重新启动后,出现了这个错误。 幸好我的远程回购是最新的,所以我刚刚做了一个新的git克隆。 |
![]() |
11
2
我遵循了这里的许多其他步骤;Linus关于如何查看Git树/对象并查找缺少的内容的描述特别有用。 git-git recover corrupted blob 但最后,对于我来说,由于部分磁盘故障导致树对象松动/损坏,并且树对象不太容易恢复/不被该文档覆盖。
最后,我移动了冲突
仍然给我留下了很多悬空的斑点,这可能是打开以前存档的东西的副作用,并在其他问题中解决。 here |
![]() |
12
2
对于@user1055643缺少最后一步的回答:
|
![]() |
13
1
运行
|
![]() |
14
1
对我来说,这是因为在执行
消息如下:
我尝试过
在第二个克隆上我做了一个
|
|
15
1
我是这样解决的: 我决定简单地将未损坏的对象文件从备份的克隆复制到我的原始存储库。这同样有效。(顺便说一下:如果在.git/objects/中找不到该对象的名称,那么它可能是为了节省空间而被[打包][打包]。) |
|
16
1
只需运行
|
![]() |
17
0
我在我的光秃秃的远程git repo中也遇到了同样的问题。经过大量的故障排除后,我发现我的一个同事提交了一个commit,其中.git/对象中的一些文件的权限是440(r--r------)而不是444(r--r--r--)。在要求同事在bare git repo中使用“chmod 444-r对象”更改权限后,问题得到了解决。 |
|
18
0
我们刚拿到案子。问题是损坏文件的所有权是根目录而不是我们的普通用户。这是由于有人在服务器上完成了“sudo-su--”之后所做的提交操作造成的。 首先,确定损坏的文件:
您应该收到这样的答案:
进入损坏文件所在的文件夹并执行以下操作:
检查损坏文件的所有权。如果情况不同,只需返回回购的根目录并执行以下操作:
希望有帮助! |
![]() |
19
0
我就是遇到这样的问题。我的特定问题是由系统崩溃导致的,系统崩溃破坏了最近的提交(因此也破坏了主分支)。我没有推挤,想重新承诺。在我的特定案例中,我可以这样处理:
这对我很有用。我怀疑这是一个相当常见的场景,因为最近的提交是最有可能被破坏的,但是如果您再丢失一个,您可能仍然可以使用这样的方法,并小心地使用
|
![]() |
20
0
当我遇到这个问题时,我备份了我最近的更改(因为我知道我所做的更改),然后删除了它在.git/location中抱怨的文件。然后我拉了一下。不过要小心,这可能对你不起作用。 |
|
21
-6
只需删除.git文件夹并重新添加即可。这个简单的解决方案对我很有效。 |
![]() |
charleslcso · 从开源克隆并推送到我的GitHub[重复] 1 年前 |
|
Itachi · 无法为python项目安装“DAWG”包 1 年前 |
![]() |
Igor · git重置已删除目录上的头 2 年前 |
![]() |
Robo · 撤消删除Git中被忽略的文件 2 年前 |
![]() |
Ali EXE · 如何根据bat中命令的输出设置变量? 2 年前 |
![]() |
ShortArrow · 如何使用git管理链接源文件? 2 年前 |
![]() |
Siggi · 使用git移动文件时丢失历史记录 2 年前 |