似乎我有一个丢失的对象,而且我的packfile计数也不好?
remote: Counting objects: 25733, done.
remote: Compressing objects: 100% (12458/12458), done.
remote: Total 19185 (delta 6914), reused 17995 (delta 6535)
Receiving objects: 100% (19185/19185), 1.69 GiB | 465 KiB/s, done.
Resolving deltas: 100% (6914/6914), completed with 1058 local objects.
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack claims to have 19185 objects while index indicates 20243 objects
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack cannot be accessed
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack claims to have 19185 objects while index indicates 20243 objects
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack cannot be accessed
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack claims to have 19185 objects while index indicates 20243 objects
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack cannot be accessed
error: unable to find e17196d88ae91dea07b4d61716b91dac581fb131
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack claims to have 19185 objects while index indicates 20243 objects
error: packfile .git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack cannot be accessed
fatal: object e17196d88ae91dea07b4d61716b91dac581fb131 not found
修改 另一个似乎已经萌芽了,所以现在我已经.... [/ p>
.git/objects/pack/pack-1f0643b00b9c201338b7f1365ef188ef682a6a9e.pack
.git/objects/pack/pack-931e28ca404e28040a10085dd1534ef12cf18c6d.pack
我已尝试将这些文件复制到www-root上并删除它们,现在正在运行git-gc
,我将尝试使用git fetch origin
git-gc
现在返回
bad sha1 file: .git/objects/05/.a2e1939ce5a53d5ec7c3cacc4df97acd09c6af.hdgIVe
bad sha1 file: .git/objects/80/.1a75684e9d869e9ed7c1ded674c55caa17c524.YUr1Yu
bad sha1 file: .git/objects/8c/.7e8381b3e0d0a1f1d4fa328f0dda0a1dbd814a.L0255H
bad sha1 file: .git/objects/c5/.32926ac2d67785cb8580b885ac3d3fd7075f57.rDsW4H
Removing stale temporary file .git/objects/pack/tmp_pack_jnP5qn
答案 0 :(得分:1)
看起来其他仓库中存在一些损坏。如果它是一个中央回购,请从您的回购中重新克隆它然后让每个人都推动他们的分支机构。你的拉动应该在那之后工作 - 除非你不能得到消息说你将回购修复给每个人..
答案 1 :(得分:1)
如" Problems with corrupt git repo"及其associated discussion所述:
然后将这些对象中的许多对象打包到一个packfile中以节省空间。 您通过更改内容来破坏这些包文件 - 更糟糕的是:更改其内容的长度
git fsck
实际上没有修复有关git存储库的任何内容,只是检查错误并报告。
另一方面,git unpack-objects
能够从损坏的packfile中尽可能地解压缩,但您的仓库中仍会出现错误,因为git fsck --full
会报告。
见" How to fix a broken repository?"或" How to remove all broken refs from a repository?"。
请注意,使用Git 2。4。3(2015年6月),不再有警告packfile .git/objects/pack/pack-xxx.pack cannot be accessed
这样只关注实际的错误。
commit 319b678见Jeff King (peff
) [2015年3月31日]
(由Junio C Hamano -- gitster
--合并于commit 3c91e99,2015年6月5日)
与Peff一样,解释很有启发性:
sha1_file
:压制"packfile cannot be accessed
"警告当我们在packfile索引中找到一个对象时,我们确保我们仍然可以打开packfile本身(或者它已经打开),因为它可能已经被同时重新打包删除了。
如果我们无法访问packfile,我们会为用户打印一个警告并告诉来电者我们没有该对象(我们可以查看其他包文件,或者找到一个松散的版本,然后放弃)。我们向用户打印的警告并未真正完成任何操作,并且可能会让用户感到困惑。
在正常情况下,它是完整的噪音;我们在其他地方找到了这个对象,并且用户不必关心我们匆匆看到一个变得陈旧的packfile索引。它根本不影响操作。
可能更有趣的情况是我们以后无法找到对象,并向用户报告失败。在这种情况下,警告可以被视为最终失败的线索。但它在实践中并不是真正有用的线索。我们甚至不会一直打印它(因为我们正在与另一个进程竞争,我们甚至可能看不到
.idx
文件, 或者我们可能赢得比赛并打开packfile,完成操作。)此修补程序完全放弃警告(不仅来自
fill_pack_entry
网站,还来自pack-objects
中的相同用途)。
如果我们确实在错误情况下发现警告很有意义,我们可以将其填满,并在我们稍后die()
由于对象损坏时将其显示给用户。但这种复杂性并不值得。