Git clone 大文件时报错:Out of memory

Git在clone远程大文件时,报错Out of memory。意思是说clone的文件太大了,超出了限制,具体错误如下:

remote: Counting objects: 13847, done.
remote: error: Out of memory, malloc failed (tried to allocate 168827801 bytes)
remote: error: failed to read object e0f64433172d27df0609902b36accefc08b2e932 at offset 50780215 from ./objects/pack/pack-b65cc75a8685ba3c75207208eca4df10186ccd36.pack
remote: fatal: packed object e0f64433172d27df0609902b36accefc08b2e932 (stored in ./objects/pack/pack-b65cc75a8685ba3c75207208eca4df10186ccd36.pack) is corrupt
remote: aborting due to possible repository corruption on the remote side.
fatal: protocol error: bad pack header

解决方案:

git config --global core.compression 0

git clone --depth 1 项目地址

以上就可以正常clone远程项目到本地了。但是这里还有一个问题:depth 用于指定clone的深度,当为1时表示只clone最近一次commit。项目小了就可以解决前面说的文件过大导致的Out of memory。但这只会把默认的分支clone下来,其它分支无法显示。所以当使用git pul --all的时候无法获取到远程分支,使用git branch -r 也无法看到远程分支。

解决方案:

方案1:

找到项目的 .git/config 

将原文件:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com/ReactiveX/rxjs
    fetch = +refs/heads/master:refs/remotes/origin/master
[branch "master"]
    remote = origin
    merge = refs/heads/master

修改成:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com/ReactiveX/rxjs
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

方案2:

拉取其它分支的时候使用如下命令:

 git clone --depth 1 远程项目地址
 git remote set-branches origin 'remote_branch_name'
 git fetch --depth 1 origin remote_branch_name
 git checkout remote_branch_name
 

将remote_branch_name替换成要拉取的远程分支名就可以了。

回答: 当你在克隆代码遇到"fatal: Out of memory, malloc failed (tried to allocate 1058576000 bytes)"的错误,这通常是由于内存不足导致的。为了解决这个问题,你可以尝试以下方法:首先,创建一个临目录并设置权限: sudo mkdir -p /opt/temp sudo chmod 600 /opt/temp/swapfile 然后,使用dd命令创建一个交换文件: sudo dd if=/dev/zero of=/opt/temp/swapfile bs=1M count=1024 接下来,使用mkswap命令将交换文件格式化为swap文件系统: sudo mkswap /opt/temp/swapfile 最后,使用swapon命令启用交换文件: sudo swapon /opt/temp/swapfile 这样应该能够解决内存不足的问题。\[2\] 另外,如果你想了解更多关于Git的配置信息,你可以使用以下命令来查看Git的所有配置: git config --global --list 如果你想编辑配置文件,可以使用以下命令: git config --global --edit 如果你想删除全局配置项,可以使用以下命令: git config --global --unset user.name 这些命令可以帮助你管理Git的配置信息。\[3\] #### 引用[.reference_title] - *1* *3* [Git clone代码报“fatal: Out of memory, malloc failed (tried to allocate 1058576000 bytes)”的解决...](https://blog.csdn.net/lovedingd/article/details/125595649)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [报错解决: fatal: Out of memory, malloc failed](https://blog.csdn.net/dfkc76453/article/details/102083479)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值