当我使用1and1对我的共享主机上的远程Route
时,我收到以下错误消息:
git push remotename branchname
我使用以下代码设置了远程git repo的挂钩:
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 688 bytes | 0 bytes/s, done.
Total 7 (delta 2), reused 0 (delta 0)
remote: fatal: Out of memory, realloc failed
当我通过SSH连接到我的遥控器并发出#!/bin/sh
git --work-tree=/absolute/path/to/remotedir --git-dir=/absolute/path/to/remotedir/live.git checkout -f
时,我发现有足够的可用内存(不确定这是否与我的问题有关):
free
我的遥控器正在使用:
total used free shared buffers cached
Mem: 12330360 11796336 534024 32080 25248 8553496
-/+ buffers/cache: 3217592 9112768
Swap: 270332 3552 266780
我当地人正在使用:
Debian 3.14.73-2~ui80+4
git version 2.1.4
真的不确定为什么会这样。任何帮助表示赞赏!
当我在遥控器上运行OS X 10.11.2
git version 2.4.9 (Apple Git-60)
时,我得到:
ulimit -a
答案 0 :(得分:3)
感谢@ЕлинЙ。共享的 !但是使用语法我们遇到了一些问题,但也许适用于他的服务器。对于1and1,我们必须使用这个git配置来使远程仓库工作:
[core]
packedGitWindowSize = 640m
packedGitLimit = 640m
preloadindex = false
[pack]
windowMemory = 640m
threads = 1
答案 1 :(得分:2)
我已经设法解决了这个问题。至少,我几个月没有得到它。由于我做了很多试验和错误,阅读了许多不同的建议等,我不确切知道修改了哪些配置。
因此,我想分享我的git配置,以帮助其他人作为参考:
core.preloadindex=false
core.packedgitwindowsize=640m
core.packedgitlimit=640m
pack.windowmemory=640m
pack.threads=1
答案 2 :(得分:1)
根据ulimit,您的托管服务器已将虚拟内存的每进程限制设置为768MB。你的钩子后脚本会被杀死,因为它的要求可能超出限制。
你可以尝试更新你的“git config”以适应你的环境。
有一些指示答案 3 :(得分:1)
在1and1主机上,在命令提示符下...
ulimit -a
报告了几件事......一件是:
open files (-n) 512
跑命令:
ulimit -Sn unlimited
并改为:
open files (-n) 1024
然后git commit
会起作用。没有更多的错误。