【问题标题】:How can I git pull on the server optimally?如何以最佳方式在服务器上进行 git pull?
【发布时间】:2018-07-09 10:29:28
【问题描述】:

这两天我试图将我的项目(在 git 上)拉到我的服务器上。我的服务器有 1GB 内存并使用 Ubuntu 操作系统。 (通常 200mb 的 RAM 被其他进程使用).

当我在服务器上运行 git pull origin master 时,它会抛出这个:

致命:内存不足,malloc失败(尝试分配533517295字节)

致命:索引包失败

这里也是nano .git/config的结果:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    packedGitLimit = 512m
    packedGitWindowSize = 512m

[remote "origin"]
    url = https://***@bitbucket.org/***/***.g$
    fetch = +refs/heads/*:refs/remotes/origin/*

[pack]
  threads = 1
  deltaCacheSize = 512m
  packSizeLimit = 512m
  windowMemory = 512m

老实说,我无法为我的服务器获得更多 RAM。知道如何将我的项目拉到服务器上吗?

注意到实际上有真实姓名而不是***

【问题讨论】:

  • 你用的是什么版本的git?
  • My server has 1GB ram ...您的服务器是 10-15 岁吗?大多数人的 笔记本电脑 运行 8GB 或更多,当然对于开发人员和其他有技术头脑的人来说。如果可能,在您的服务器中获取更多 RAM。
  • 您能在服务器上运行git fsck 吗?只是为了仔细检查 repo 不包含可能使 git 使用大量内存的损坏对象
  • @DaveShaw git version 2.7.4
  • @TimBiegeleisen 我知道 1GB 内存使它成为一个弱服务器,但遗憾的是我现在无法增加它。

标签: git git-pull


【解决方案1】:

要限制提取操作期间使用的内存量(git pull 使用 git fetch),您可以使用 --depth 标志。

只需运行git pull --depth=10 并增加数字以获取越来越多的历史记录(如果内存不足,则减少它)。一旦你在历史中加载了足够的对象,你可以使用git fetch --unshallow请求剩余的对象

深度拉取的缺点是您的存储库将占用更多磁盘空间,因为它还必须考虑存储库的多种状态

【讨论】:

  • git pull --depth=10 有同样的错误,但我是通过git pull --depth=1 完成的。谢谢。
  • 好的,现在当我运行git fetch --unshallow 时,它仍然会抛出内存不足。是否必须执行此命令?
  • 只有当您想查看完整历史记录时,如果您想向全世界提供您的网站(我认为这是您的目标,因为您在 /var/www/html 目录中)它不需要。您也可以多次运行git pull,每次将深度值增加 1
  • 你知道,它是服务器。所以我总是想在服务器中进行最后一次提交。我不在乎历史。
猜你喜欢
  • 1970-01-01
  • 2021-02-26
  • 2011-07-31
  • 1970-01-01
  • 2015-12-26
  • 2018-08-29
  • 2013-09-01
  • 1970-01-01
  • 2014-02-17
相关资源
最近更新 更多