我使用的是Ubuntu14.10(64位),Git2.1.0版。这是一个已经存在多年的存储库,最近开始出现问题。有时我会更改分支,编辑一个文件,然后输入git状态。它将显示一组文件为“已修改”,实际上根本没有更改。如果我键入以下内容:我得到这样的错误:error: short read No such file or directoryerror: globalstatic/images/console/avatar_f.gif: failed to insert intodatabaseerror: unable to index file globalstatic/images/console/avatar_f.giffatal: updating files failed如果除了按向上箭头键并再次按Enter键之外,我什么都不做,我将得到一个关于下一个显示在$ git commit -am "fixed sms message"中的文件的错误,该文件实际上从未更改过。我可以这样做,直到我用尽了git status中未更改的文件列表,然后它将正确提交。git status报告它发现了问题,但实际上没有修复任何问题。我只需要继续努力承诺,直到成功。以下是git fsck --full的输出,当它给我问题时:Checking object directories: 100% (256/256), done.Checking objects: 100% (120625/120625), done.dangling tag c7539416829fb0748bc32dda3beb386bac46ea9adangling blob 88a0700db2a75e6ea2b14b9a5af15ece63a80805dangling blob f4c664b0044f3d5efff1148717dc68b940e08574dangling blob 1bf6185091177fd5a496f5bf031f4d666fec92dadangling commit fee4bdcc078789a3745aa1311f128a6b61a81736dangling blob 9f14e68da29d49895b1ea303ed33cb390fc56b76dangling blob 784a02e974b81f35952fb7c31bf2dcb1a7bfeda8dangling blob 9e92d6cf395206152123f9a29edb95652114fd34dangling commit 1294f626dcb76cafa560f65792517655fb8a52aedangling blob bceb1adde285e71109723211a1bcb5b0fa126681dangling tag 19f4be8e7b53465b13359bc4350b5e87c5942560dangling blob 93f96a3b5e995032a50723af796dab9ae36fb974dangling blob a25bdfab82fef920935478ee2cefe4dc2e81bbf6dangling blob af7187350341f3d7795d35cc1f0cee78eb9f9fdfdangling blob e2a1db9e3d3d438c8b03cb6254ca492e505be6f8如果我多次运行它,我会收到相同的消息。没有变化。怎么回事? (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 不知道发生了什么(除了注意到明显的,一些事情正在腐蚀您的git repo),但我知道我如何解决这样的事情-我希望这是一个隐含的问题!将您的回购推到某个地方(本地的裸机存储库就可以了)将旧存储库重命名为myrepo.broken或类似名称查看您推到前一个位置的回购的新副本一旦确定没有损失,删除旧回购与回购本身相比,我更喜欢上述方法。但如果你坚持的话(我会先做个备份):请注意,悬空的blob和commits可能完全没有问题-请参见例如here。短读物不应该发生。git gc --prune=now将删除所有悬空的blob并提交。是关于维护和数据恢复的教程。就目前的情况而言,我遇到了一些问题当NFS服务器不可靠时,NFS装载的包含Git树的主目录不区分大小写的归档系统断电/系统崩溃导致FS损坏或在提交过程中发生系统中未识别的希腊语很容易避免第一和第二次重复,第三次是可以理解的,但第四次往往比较棘手。午夜后不要进食。 (adsbygoogle = window.adsbygoogle || []).push({}); 07-24 12:55