为了账号安全,请及时绑定邮箱和手机立即绑定

重新包装Git存储库失败

重新包装Git存储库失败

Git
手掌心 2019-09-20 14:52:33
我有一个git存储库驻留在内存有限的服务器上。当我尝试从服务器克隆现有存储库时,我收到以下错误hemi@ubuntu:$ git clone ssh://hemi@servername.dk/home/hemi/repos/articlesInitialized empty Git repository in /home/hemi/Skrivebord/articles/.git/hemi@servername.dk's password: remote: Counting objects: 666, done.remote: warning: suboptimal pack - out of memoryremote: fatal: Out of memory, malloc failederror: git upload-pack: git-pack-objects died with error.fatal: git upload-pack: aborting due to possible repository corruption on the remote side.remote: aborting due to possible repository corruption on the remote side.fatal: early EOFfatal: index-pack failedhemi@ubuntu:$ 为了处理这个错误,我试图重新打包原始存储库(根据此论坛帖子)。但是,它不是重新打包存储库,而是描述了如何使用“git pack-objects”命令。hemi@servername:~/repos/articles$ git repack -a -d --window-memory 10m --max-pack-size 100musage: git pack-objects [{ -q | --progress | --all-progress }]        [--all-progress-implied]        [--max-pack-size=N] [--local] [--incremental]        [--window=N] [--window-memory=N] [--depth=N]        [--no-reuse-delta] [--no-reuse-object] [--delta-base-offset]        [--threads=N] [--non-empty] [--revs [--unpacked | --all]*]        [--reflog] [--stdout | base-name] [--include-tag]        [--keep-unreachable | --unpack-unreachable         [<ref-list | <object-list]Git 1.6.5.7安装在服务器上。
查看完整描述

3 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

您的解决方案已在本地和远程为您提供工作副本,但在远程存储库决定再次重新打包时会再次导致问题。幸运的是,您可以设置配置选项,这将减少在两个存储库中重新打包所需的内存量 - 这些实质上会使您在重新打包时添加到默认选项中的命令行参数。因此,您应该登录到远程,更改到存储库并执行:


git config pack.windowMemory 10m

git config pack.packSizeLimit 20m

您可能希望在本地存储库中执行相同的操作。(顺便说一下,我猜你的存储库非常大,或者这些是内存很少的机器 - 这些值对我来说似乎很低。)


对于它的价值,重新包装获得的malloc失败时非常过去大型的仓库,我也改变了价值观core.packedgitwindowsize,core.packedgitlimit,core.deltacachesize,pack.deltacachesize,pack.window和pack.threads,但它听起来好像你不需要任何进一步的选择:)


查看完整回答
反对 回复 2019-09-20
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

由于无法直接访问存储库,因此无法执行重新打包,执行浅层克隆然后逐渐获取,同时增加深度对我有帮助。


git clone YOUR_REPO --depth=1

git fetch --depth=10

...

git fetch --depth=100

git fetch --unshallow    //Downloads all history allowing to push from repo

希望它仍然可以帮助某人。


查看完整回答
反对 回复 2019-09-20
?
MMTTMM

TA贡献1869条经验 获得超4个赞

我使用以下步骤解决了这个问题。

  1. 已将存储库从服务器检出到我的本地计算机(使用ssh上的原始副本)

  2. 重新打包本地存储库
    git repack -a -d --window-memory 10m --max-pack-size 20m

  3. 在服务器上创建了一个空存储库
    git init --bare

  4. 将本地存储库推送到服务器

  5. 检查是否可以克隆服务器存储库


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 970 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信