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

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 = senemail = 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.mzph.cn/diannao/47761.shtml

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

相关文章

【总结】nginx源码编译安装报错./configure: error: SSL modules require the OpenSSL library.

问题现象 源码编译安装nginx时,执行./configure …… --with-http_ssl_module 命令安装https模块,需要用到openssl,由于机器缺少openssl库,报如下错误。 …… checking for openat(), fstatat() ... found checking for getaddr…

开源模型应用落地-FastAPI-助力模型交互-进阶篇(三)

一、前言 FastAPI 的高级用法可以为开发人员带来许多好处。它能帮助实现更复杂的路由逻辑和参数处理,使应用程序能够处理各种不同的请求场景,提高应用程序的灵活性和可扩展性。 在数据验证和转换方面,高级用法提供了更精细和准确的控制&#…

Go网络编程-RPC程序设计

gRPC 通信 RPC 介绍 RPC, Remote Procedure Call,远程过程调用。与 HTTP 一致,也是应用层协议。该协议的目标是实现:调用远程过程(方法、函数)就如调用本地方法一致。 如图所示: 说明: Servi…

windows下安装启动运行MinIO

MinIO服务器本身是采用Go语言开发的; 编程操作MinIO服务器的客户端有很多: Go,Python,Java,.NET,JavaScript,Haskell,C 官方文档:https://min.io/docs/minio/linux/dev…

MySQL下载安装使用教程图文教程(超详细)

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们使…

Jenkins-zookeeper-docker-xxljob-rancher

文章目录 Jenkins实战1 新建任务需要的配置pipeline Zookeeper基础 Docker基础实操windows11 docker mysql DockerhouseDockerhubxxl-Job基础实战 Rancher基础思考 实战1 Rancher的某个namespace的scale为0 Jenkins 实战 1 新建任务需要的配置pipeline 该代码是Jenkinsfile&…

版本控制工具

版本控制工具是用于记录代码文件变化历史、方便查阅特定版本修改情况的系统,一般分为集中式和分布式两种。以下是一些常见的版本控制工具: 集中式版本控制工具 Subversion(SVN) 简介:Subversion是一种集中式版本控制…

《基于 CDC、Spark Streaming、Kafka 实现患者指标采集》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

如何获得Cesium的TileSet并设置本地服务器的Url

一.总体思路 首先使用管理者获得TileSet,通过JSON文件读写,调用对应的Cesium内部提供的函数。 UE5中Json文件的读取与解析 - 知乎 (zhihu.com) 不太了解JSON的可以学习这个。 二.具体实现 1.创建Actor,并且 如何获得Cesium的TileSet,设置本地Url 一…

实现了一个心理测试的小程序,微信小程序学习使用问题总结

1. 如何在跳转页面中传递参数 ,在 onLoad 方法中通过 options 接收 2. radio 如何获取选中的值? bindchange 方法 参数e, e.detail.value 。 如果想要获取其他属性,使用data-xx 指定,然后 e.target.dataset.xx 获取。 3. 不刷…

全国媒体邀约,主流媒体到场出席采访报道

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 全国媒体邀约,确保主流媒体到场出席采访报道,可以带来一系列的好处,这些好处不仅能够增强活动的可见度,还能对品牌或组织的长期形象产生积…

将iPad 作为Windows电脑副屏的几种方法(二)

将iPad 作为Windows电脑副屏的几种方法(二) 1. 前言2. EV 扩展屏2.1 概述2.2 下载、安装、连接教程2.3 遇到的问题和解决方法2.3.1 平板连接不上电脑 3. Twomon SE3.1 概述3.2 下载安装教程 4. 多屏中心(GlideX)4.1 概述4.2 下载安…

基于FPGA的多路选择器

目录 一、组合逻辑 二、多路选择器简介: 三、实战演练 摘要:本实验设计并实现了一个简单的多路选择器,文章后附工程代码 一、组合逻辑 组合逻辑是VerilogHDL设计中的一个重要组成部分。从电路本质上讲,组合逻辑电路的特点是输…

数据结构(单链表算法题)

1.删除链表中等于给定值 val 的所有节点。 OJ链接 typedef struct ListNode ListNode;struct ListNode {int val;struct ListNode* next; };struct ListNode* removeElements(struct ListNode* head, int val) {//创建新链表ListNode* newhead, *newtail;newhead newtail N…

verilog bug记录——正点原子spi_drive存在的问题

verilog bug记录——正点原子spi_drive存在的问题 问题概述代码修改—spi_drive.v遗留问题 问题概述 因为项目需求,需要利用spi对flash进行擦除和写入操作,所使用的开发板是正电原子的达芬奇开发板,我事先往Flash里面存了两个bit&#xff0c…

全国产服务器主板:搭载飞腾FT2000+/64处理器的高性能加固服务器

近期很多朋友咨询全国产化的服务器主板。搭载的是飞腾FT-2000/64的全国产化服务器主板。他的主要特点是:①丰富的PCIe、千兆以太网、SATA接口,可用作数据处理、存储、通信服务器;②​​​​​​​板载独立显示芯片,对外HDMI/VGA/L…

DP(6) | 完全背包 | Java | LeetCode 322, 179, 139 做题总结

322. 零钱兑换 我的错误答案 class Solution {public int coinChange(int[] coins, int amount) {int[][]dp new int [coins.length][amount1];for(int j0; j<amount; j) {if(coins[0] j){dp[0][coins[0]] 1;}}for(int i1; i<coins.length; i) {for(int j0; j<am…

vue3前端开发-小兔鲜项目-图片懒加载的自定义标签

vue3前端开发-小兔鲜项目-图片懒加载的自定义标签&#xff01;很多大型网站&#xff0c;因为首页面渲染的内容太多了&#xff0c;然而有些用户&#xff0c;可能在顶部就发现了自己感兴趣的内容&#xff0c;直接就点击跳转去了其他页面&#xff0c;因此&#xff0c;完全没有必要…

神经网络之多层感知机

目录 一、全连接层&#xff1a;二、单层感知机概念&#xff1a;三、多层感知机概念&#xff1a; 一、全连接层&#xff1a; 在神经网络中&#xff0c;全连接层就是每个神经元都与上一层的所有神经元相连接&#xff0c;即每个神经元都接收上一层所有神经元的输入&#xff0c;并…

【面试题】数据结构:堆排序的排序思想?

堆排序的排序思想&#xff1f; 堆排序是一种高效的排序算法&#xff0c;其基本思想是利用堆这种数据结构来实现排序。堆是一种特殊的完全二叉树&#xff0c;通常用数组来表示。堆排序的基本步骤如下&#xff1a; 1. 构建初始堆&#xff1a; 将待排序的数组转换成一个最大堆&a…