git对象树是如何被破坏的?

时间:2017-07-19 21:53:01

标签: git version-control

当像往常一样拉动我的回购时(通过一个简短的C程序,无论是否发生了变化,都会提取许多回购),其中一个打印了以下信息:

error: object file .git/objects/eb/4384d0e2460629d912635ec622beb979024316 is empty
error: object file .git/objects/eb/4384d0e2460629d912635ec622beb979024316 is empty
fatal: loose object eb4384d0e2460629d912635ec622beb979024316 (stored in .git/objects/eb/4384d0e2460629d912635ec622beb979024316) is corrupt
fatal: The remote end hung up unexpectedly

在存储库中执行git status时打印了相同的消息(没有最后一行)。

这个问题不是关于如何恢复数据或类似的东西。它是关于了解这是如何发生的。

存储库只有1个遥控器,只有我使用这个遥控器(通过几台机器)。我在这个回购中直接在master上工作,没有其他分支。通过ssh访问遥控器。那个时候拉回了35个回购,只有这个回购破产了。

此存储库中的最后一次更改似乎是在发生错误并已提交并推送到远程控制台的计算机上进行的。

我从这个事实中猜测这个事实是我在遥控器破坏的机器上做的事情我会做的事情,它破坏后的工作目录不包含{{{{{如果我再次从远程克隆并将破坏的仓库的工作目录复制到新的克隆,则报告一个干净的仓库。不幸的是,我不能在破坏的回购中使用git status因为它只打印上面提到的错误消息(当然没有最后一行)。

回购什么时候打破?对我而言,回购似乎处于完美无缺的状态。

是否重要:破坏的仓库位于Ubuntu 16.04(内核git log)笔记本电脑的主文件夹中,该笔记本电脑使用ext4分区和Ubuntu的默认主文件夹加密(eCryptfs)。

这是我以前提取的程序的源代码:https://pastebin.com/bBTz4vH2

1 个答案:

答案 0 :(得分:0)

通常由git操作引起的错误消息突然中止。

您只需要删除本地git仓库的4384d0e2460629d912635ec622beb979024316文件夹中的空对象.git/objects/eb即可。然后运行git命令(例如git statusgit pull)以检查它是否正常工作。