GIT--git clone fatal [文件过大或网络不稳定] [大型仓库]

news2024/9/22 4:17:54

GIT--git clone fatal

  • 1 介绍
    • 1.1 原因分类
    • 1.2 文件过大或网络不稳定
  • 2 分析
  • 3 操作
    • 3.1 指定克隆深度【浅克隆】
    • 3.2 分批次下载
    • 3.3 增大Git的HTTP POST缓冲区大小
    • 3.4 配置git的最低速度和最低速度时间(单位:秒)
    • 3.5 压缩
    • 3.6 过滤下载 git filter branch
    • 3.7 仅克隆一个分支
  • 4 其他
    • 4.1 查看配置列表
    • 4.2 配置文件介绍
  • 参考

1 介绍

在这里插入图片描述

1.1 原因分类

git clone fatal 原因可能很多:

  • 网络问题
  • 仓库地址错误
  • 代理设置问题
  • SSH协议问题
  • SSL证书验证失败
  • 路径过长
  • 文件过大或网络不稳定

1.2 文件过大或网络不稳定

Cloning into 'hello-algo'...
remote: Enumerating objects: 76879, done.
remote: Counting objects: 100% (522/522), done.
remote: Compressing objects: 100% (318/318), done.
fatal: the remote end hung up unexpectedly71 MiB | 325.00 KiB/s
fatal: early EOF
fatal: index-pack failed

在这里插入图片描述

2 分析

  • 克隆的仓库包含大量数据或分支。
  • 网络连接不稳定或速度慢。

3 操作

3.1 指定克隆深度【浅克隆】

使用 --depth 选项克隆仓库的最近一次提交

git clone --depth 1 https://github.com/XXX/XXX.git

为1即表示只克隆指定分支最近一次commit,体积小,可解决项目过大导致Timeout的问题。

优点:限制 clone 的深度,不包括历史记录,提高克隆速度;

当指定depth克隆深度为1,即表示只克隆最近一次的commit;

适用于只要最新版本,不考虑历史记录的情况。

3.2 分批次下载

先使用 --depth 克隆部分数据,然后执行 git fetch --unshallow 来获取完整仓库。

3.3 增大Git的HTTP POST缓冲区大小

如 git config http.postBuffer 524288000(单位为字节)。

// 524288000 的单位代表 B,524288000B 也就是 500MB。
sudo git config http.postBuffer 5242880000
sudo git config https.postBuffer 5242880000

查看是否成功
git config --list | grep postbuffer

[user]
        name = sen
        email = sen@yocobot.com
[core]
        compression = 0::
[http]
        postBuffer = 1048576000

示例

git config --edit --global

点击Esc键,这一步的意思是vim准备接受命令了,然后 shift + : ,输入 q! = 退出,wq = 写入保存退出。

:q    --退出(如果没有做任何操作,可以直接退出,如果修改内容,还没有保存,这样就退不了)
:q!    --不保存退出(没有保存,就可直接退出了,也就是强退)
:wq    --写入文件并退出
:wq!    --强制写入,并退出(有些打开的文件是只读的,可以用这个命令)

在这里插入图片描述

3.4 配置git的最低速度和最低速度时间(单位:秒)

git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999999

3.5 压缩

当执行clone指令时,服务器将压缩目标文件,再传输到客户端解压。core.compression取值范围[-1,9];-1是以zlib默认压缩,0不压缩,1-9是压缩速度与压缩后文件大小之间的权衡,数字越大,压缩越慢,得到的文件越小。

git config --global core.compression 0
root@hcss-ecs:/opt/worthsen# git config --global core.compression 0
root@hcss-ecs:/opt/worthsen# git config --list
core.compression=0

3.6 过滤下载 git filter branch

对于有大量错误提交的二进制垃圾或不再需要的旧资产的大型存储库,一个很好的解决方案是使用 git filter-branch。 该命令允许您遍历项目的整个历史记录,根据预定义的模式过滤、修改和跳过文件。

一旦你确定了你的仓库中哪些地方比较重,它就是一个非常强大的工具。有可用的帮助脚本来识别大对象,所以这部分应该很容易。

语法如下:

git filter-branch --tree-filter 'rm -rf [/path/to/spurious/asset/folder]'

不过, git filter-branch 有一个小缺点:一旦使用 filter-branch,您实际上就会重写项目的整个历史记录。也就是说,所有提交 ID 都会更改。这要求每个开发人员重新克隆更新后的存储库。

因此,如果您计划使用git filter-branch执行清理操作 ,您应该通知您的团队,在执行操作时计划短暂冻结,然后通知每个人应该再次克隆存储库。

3.7 仅克隆一个分支

从 git 1.7.10 开始,你还可以通过克隆单个分支来限制克隆的历史记录量,如下所示:

git clone [remote url] --branch [branch_name] --single-branch [folder]

如果您要处理长期运行且存在分歧的分支,或者您有大量分支但只需要处理其中的几个,那么这个特定的 hack 非常有用。如果您只有少数分支且差异很小,那么使用这个 hack 可能不会看到很大的差异。

4 其他

4.1 查看配置列表

git config --list

4.2 配置文件介绍

  • system
    系统级别,一般存放系统设置,作用范围最大
    一般存放于[Git安装目录]\mingw64\etc\gitconfig,但是Git不会自动生成这个文件只有通过命令编辑文件后,该文件才会生成,编辑命令git config --system --edit
  • global
    全局文件,整个系统用户范围内生效,作用范围比system小
    配置文件不会自动生成,通过命令git config --global --edit编辑之后生成,位置默认在C:\Users\Administrator.gitconfig
  • local
    每个仓库的配置文件,作用范围最小,只在本仓库生效
    clone或者init时自动生成,位置在.git\config

注:既然配置文件有3种,那如果有一个属性,三种配置文件里都有配置,且各不相同,会取哪个属性呢?
答:作用范围越小的优先生效,这样可以为每个仓库每个用户做单独的配置

参考

1、git clone fatal: The remote end hung up unexpectedly early EOF index-pack failed 解决方案
2、stackoverflow–fatal: early EOF fatal: index-pack failed
3、大型仓库
4、Git实战笔记(一) 常见错误
5、【git学习】如何编辑git config --global的配置文件
6、git配置文件解析,配置命令详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1934584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go语言并发编程-Context上下文

Context上下文 Context概述 Go 1.7 标准库引入 context,译作“上下文”,准确说它是 goroutine 的上下文,包含 goroutine 的运行状态、环境、现场等信息。 context 主要用来在 goroutine 之间传递上下文信息,包括:取…

AI发展下的伦理挑战,应当如何应对?

人工智能(AI)的快速发展带来了许多伦理挑战,如何应对这些挑战是一个复杂而多方面的问题。以下是一些应对策略和建议: 坚持伦理先行原则: 制定科技伦理规范和标准,将伦理规范嵌入人工智能开发、运行等各个阶…

从PyTorch官方的一篇教程说开去(2 - 源码)

先上图,上篇文章的运行结果,可以看到,算法在迭代了200来次左右达到人生巅峰,倒立摆金枪不倒,可以扛住连续200次操作。不幸的是,然后就出现了大幅度的回撤,每况愈下,在600次时候居然和…

web安全之SQL手工注入漏洞测试

一、目的 1.掌握SQL注入原理; Sql注入详解(原理篇)_sql注入攻击的原理-CSDN博客 2.了解手工注入的方法; 3.了解MySQL的数据结构; 4.了解字符串的MD5加解密 二、过程 1.进去后出现以下界面 找注入点 发现有注入点,即id被代入执…

基于X86+FPGA+AI的远程医疗系统,支持12/13代 Intel Core处理器

工控主板:支持12/13代 Intel Core处理器,适用于远程医疗系统 顺应数字化、网络化、智能化发展趋势,国内医疗产业改革正在积极推进,远程医疗、智慧医疗等新模式新业态创新发展和应用,市场空间不断扩大,而基…

24位动态信号采集卡8路同步音频震动信号采集IEPE采集卡USB8814

24位动态信号采集卡 音频震动信号采集USB8814实测演示 品牌:阿尔泰科技 产品概述: USB8814 是一款为测试音频和振动信号而设计的高精度数据采集卡。该板卡提供 8 路同步模拟输 入通道,24bit 分辨率,单通道采样速率zui高 204.8kSP…

PWM再理解(1)

前言 昨天过于劳累,十点睡觉,本来想梳理一下PWM,今天补上。 PWM内涵 PWM全称:Pulse Width Modulation,也就是脉宽调制的意思,字面意思理解就是对脉冲的宽度进行改变。准确就是通过数字输出对模拟电路进行…

开源日历 Cal.com 项目:自定义你的时间管理(Github项目分享)

如果你是日常使用Calendly等时间安排工具的人,那么你一定知道这些工具确实方便了我们的生活,不管是商务会议、瑜伽课程还是家庭通话。然而,这些工具在控制和自定义方面往往有所局限。这时候,Cal.com应运而生。 什么是Cal.com&…

Mac 安装MySQL 配置环境变量 修改密码

文章目录 1 下载与安装2 配置环境变量3 数据库常用命令3.1 Mac使用设置管理mysql服务启停 4 数据库修改root密码4.1 知道当前密码4.2 忘记当前密码4.3 问题 参考 1 下载与安装 官网:https://www.mysql.com/ 找到开源下载方式 下载社区版 2 配置环境变量 对于Mac…

vue和微信小程序的区别、比较

找到一篇很好的关于vue和小程序之间的理解文章,在此分享一下: 前端 - vue和微信小程序的区别、比较 - 个人文章 - SegmentFault 思否https://segmentfault.com/a/1190000015684864

基于JAVA+SpringBoot+uniapp的心理小程序(小程序版本)

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、SpringCloud、Layui、Echarts图表、Nodejs、爬…

NVIDIA Container Toolkit 安装与配置帮助文档(Ubuntu,Docker)

NVIDIA Container Toolkit 安装与配置帮助文档(Ubuntu,Docker) 本文档详细介绍了在 Ubuntu Server 22.04 上使用 Docker 安装和配置 NVIDIA Container Toolkit 的过程。 概述 NVIDIA 容器工具包使用户能够构建和运行 GPU 加速容器。即可以在容器中使用NVIDIA显卡。 架构图如…

Linux 推出 Redis 分支 Valkey

Valkey——一个开源高性能键值存储 Redis 公司宣布更改开源许可之后,社区里出现了多个 Redis 分支,如 Redict、Valkey 等 2024 年 3 月 21 日,Redis 背后企业 Redis 的 CEO Rowan Trollope 宣布,该项目的许可证类型将从原本的 BS…

剧本杀小程序搭建,为商家带来新的收益方向

近几年,剧本杀游戏成为了游戏市场的一匹黑马,受到了不少年轻玩家的欢迎。随着信息技术的快速发展,传统的剧本杀门店已经无法满足游戏玩家日益增长的需求,因此,剧本杀市场开始向线上模式发展,实现行业数字化…

在RK3568上如何烧录MAC?

这里我们用RKDevInfoWriteTool 1.1.4版本 下载地址:https://pan.baidu.com/s/1Y5uNhkyn7D_CjdT98GrlWA?pwdhm30 提 取 码:hm30 烧录过程: 1. 解压RKDevInfoWriteTool_Setup_V1.4_210527.7z 进入解压目录,双击运行RKDevInfo…

使用 XPath 定位 HTML 中的 img 标签

引言 随着互联网内容的日益丰富,网页数据的自动化处理变得愈发重要。图片作为网页中的重要组成部分,其获取和处理在许多应用场景中都显得至关重要。例如,在社交媒体分析、内容聚合平台、数据抓取工具等领域,图片的自动下载和处理…

VScode通过Graphviz插件和dot文件绘制层次图,导出svg

1、安装插件 在VScode中安装Graphviz Interactive Preview插件,参考。 2、创建dot文件 在本地创建一个后缀为dot的文件,如test.dot,并写入以下内容: digraph testGraph {label "层次图";node [shape square; widt…

iOS ------ 编译链接

编译流程分析 编译可以分为四步: 预处理(Prepressing)编译(Compilation)汇编 (Assembly)链接(Linking) 预编译(Prepressing) 过程是源文件main.c和相关头文件被&#…

vue v-for展示元素分两栏 中间使用分割线

1.效果展示: 2.代码展示: <template><div class"container"><div class"column" v-for"(item, index) in items" :key"index"><div class"item">{{ item }}</div><div v-if"index %…

在 K8s 上使用 KubeBlocks 提供的 MySQL operator 部署高可用 WordPress 站点

引言 WordPress WordPress 是全球最流行的内容管理系统&#xff08;CMS&#xff09;&#xff0c;自 2003 年发布以来&#xff0c;已成为网站建设的首选工具。其广泛的插件和主题生态系统使用户能够轻松扩展功能和美化外观。活跃的社区提供丰富的资源和支持&#xff0c;进一步…