Git 突破 文件尺寸限制

2024-02-27 18:36
文章标签 git 限制 突破 文件尺寸

本文主要是介绍Git 突破 文件尺寸限制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

当Git本地存储里右超过50MB,却又确实需要上传的时候,就需要用到了不是

解决

本代码就是把大文件进行拆解成小文件,然后上传。

等到拉取下来的时候,可以直接再进行合并,合并成原文件

代码如下,仅供参考:

'''
-*- coding: utf-8 -*-
@File  : 文件分割与合并.py
@Author: Shanmh
@Time  : 2024/02/26 下午2:37
@Function: 突破git上传限制,把大文件分割成小文件再上传
'''import os
import shutilfrom natsort import natsortedimport osdef get_file_size(path):return os.path.getsize(path)/(1024*1024)def list_files_and_sizes(directory,max_size):big_list=[]for root, dirs, files in os.walk(directory):for file in files:file_path = os.path.join(root, file)file_size = get_file_size(file_path)if file_size>=max_size:print(f"{file_path}: {file_size:.2f} MB")big_list.append(file_path)return big_listdef list_parts(directory):print("Find all parts , willing combine the parts:")parts_list = []for root, dirs, files in os.walk(directory):for dir in dirs:dir_path = os.path.join(root, dir)if dir_path.endswith(".parts"):parts_list.append(dir_path)print(parts_list)return parts_list
def split_file(input_file, chunk_size):# 读取输入文件的内容os.makedirs(f"{input_file}.parts")with open(input_file, 'rb') as f:data = f.read()# 计算分割的文件数量num_chunks = len(data) // chunk_sizeif len(data) % chunk_size != 0:num_chunks += 1# 分割文件并保存为多个分块文件chunks = [data[i * chunk_size:(i + 1) * chunk_size] for i in range(num_chunks)]for i, chunk in enumerate(chunks):output_file = f'{input_file}.parts/tmp.part{str(i+1).zfill(4)}'with open(output_file, 'wb') as f:f.write(chunk)print(f'Split file: {output_file}')os.remove(input_file)return num_chunksdef merge_files(output_file):# 合并分块文件并保存为输出文件with open(output_file.split(".parts")[0], 'wb') as f:for file in natsorted(os.listdir(output_file)):input_file = f'{output_file}/{file}'with open(input_file, 'rb') as chunk_file:f.write(chunk_file.read())os.remove(input_file)shutil.rmtree(output_file)print(f'Merged file: {output_file}')if __name__ == '__main__':method=1  #如果设置为 1 进行分割大文件, 2 则是进行合并currect_path=os.getcwd() #默认当前目录,可自行更改max_size=50 #MB  大于等于 50 MB 文件split_size=40 * 1024 * 1024  # 分割大小为40MBif method==1:files_list=list_files_and_sizes(currect_path,max_size)for fi in files_list:split_file(fi, split_size)elif method==2:parts_list=list_parts(currect_path)for fi in parts_list:merge_files(fi)

注意:此代码中有删除命令,请确保本程序正常运行后,在运行

这篇关于Git 突破 文件尺寸限制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/753258

相关文章

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

如何提高Redis服务器的最大打开文件数限制

《如何提高Redis服务器的最大打开文件数限制》文章讨论了如何提高Redis服务器的最大打开文件数限制,以支持高并发服务,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

poj 2135 有流量限制的最小费用最大流

题意: 农场里有n块地,其中约翰的家在1号地,二n号地有个很大的仓库。 农场有M条道路(双向),道路i连接着ai号地和bi号地,长度为ci。 约翰希望按照从家里出发,经过若干块地后到达仓库,然后再返回家中的顺序带朋友参观。 如果要求往返不能经过同一条路两次,求参观路线总长度的最小值。 解析: 如果只考虑去或者回的情况,问题只不过是无向图中两点之间的最短路问题。 但是现在要去要回

poj 3422 有流量限制的最小费用流 反用求最大 + 拆点

题意: 给一个n*n(50 * 50) 的数字迷宫,从左上点开始走,走到右下点。 每次只能往右移一格,或者往下移一格。 每个格子,第一次到达时可以获得格子对应的数字作为奖励,再次到达则没有奖励。 问走k次这个迷宫,最大能获得多少奖励。 解析: 拆点,拿样例来说明: 3 2 1 2 3 0 2 1 1 4 2 3*3的数字迷宫,走两次最大能获得多少奖励。 将每个点拆成两个