如何从Git仓库中删除大文件并解决推送错误方案

情景说明
当你尝试推送一个包含超大文件(如war包)到Git仓库时,可能会遇到类似“文件大小超过限制”的错误。本教程将指导你如何从Git历史中删除这样的大文件,以便能够成功推送至远程仓库。以下步骤以Gitee为例,但同样适用于GitHub、GitLab等其他平台。
第一步:识别问题文件
获取文件SHA:根据错误信息,首先运行Gitee提供的命令来定位问题文件的SHA值。

` git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 文件路径' --prune-empty --tag-name-filter cat -- --all

将“文件路径”替换为实际的文件路径,例如src/main/webapp/myapp.war
等待完成:此过程可能需要一段时间,具体取决于仓库的大小。
第三步:清理与优化
清理临时文件:执行以下命令以删除过滤过程中产生的临时文件。

rm -rf .git/refs/original/ && git reflog expire --all && git gc --aggressive --prune

检查仓库大小:可选地,使用du -sh .git查看仓库大小是否减小。
第四步:强制推送更改
推送分支:由于历史已被修改,需要使用--force强制推送。

git push origin --force --all

推送标签:如果有标签涉及被修改的提交,也需要强制推送标签。

`git push origin --force --tags

第五步:
重要提醒:在执行完上述操作后,所有仓库的协作者都需要在本地执行git fetch --allgit reset --hard origin/分支名,以更新到最新的仓库状态。这是因为历史被重写了,原来的分支指向不再有效。
注意事项
数据安全:在开始之前,请确保已备份好你的本地仓库,以防操作失误导致数据丢失。
协作影响:强制推送会覆盖远程分支历史,务必与团队成员沟通,避免造成工作冲突。
远程设置:部分Git服务允许调整单个仓库的大小限制,如果频繁遇到此类问题,考虑调整这些设置或寻找更适合存储大文件的解决方案,如Git LFS(Large File Storage)。

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

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

相关文章

DAMA学习笔记(四)-数据建模与设计

1.引言 数据建模是发现、分析和确定数据需求的过程,用一种称为数据模型的精确形式表示和传递这些数据需求。建模过程中要求组织发现并记录数据组合的方式。数据常见的模式: 关系模式、多维模式、面向对象模式、 事实模式、时间序列模式和NoSQL模式。按照描述详细程度…

scrapy写爬虫

Scrapy是一个用于爬取网站数据并提取结构化信息的Python框架 一、Scrapy介绍 1.引擎(Engine) – Scrapy的引擎是控制数据流和触发事件的核心。它管理着Spider发送的请求和接收的响应,以及处理Spider生成的Item。引擎是Scrapy运行的驱动力。…

探索LlamaIndex:如何用Django打造高效知识库检索

简介 LlamaIndex(前身为 GPT Index)是一个数据框架,为了帮助我们去建基于大型语言模型(LLM)的应用程序。 主要用于处理、构建和查询自定义知识库。 它支持多种数据源格式 excel,txt,pdf&…

Matlab中collectPlaneWave函数的应用

查看文档如下: 可以看出最多5个参数,分别是阵列对象,信号幅度,入射角度,信号频率,光速。 在下面的代码中,我们先创建一个3阵元的阵列,位置为:(-1,0,0&#x…

【linux进程】进程地址空间(什么是进程地址空间?为什么要有进程地址空间?)

目录 一、前言 二、 程序的地址空间是真实的 --- 物理空间吗? 三、进程地址空间 🔥 操作系统是如何建立起进程与物理内存之间的联系的呢? 🔥什么是进程地址空间? 🔥为什么不能直接去访问物理内存&a…

c小红的图上划分(牛客127)

题意: 有一个无向图,有 n 个点 m 条边,q 个询问,每次给出 L,R,求将图划分为至少 L 个连通块,最多 R个连通块的最大划分价值,若不可划分输出 "NO ANSWER"。 图的划分定义为将图划分为一…

Tabu Search — 温和介绍

Tabu Search — 温和介绍 目录 Tabu Search — 温和介绍 一、说明 二、什么是禁忌搜索以及我可以在哪里使用它? 三、禁忌搜索原则 四、短期记忆和积极搜索: 五、举例时间 六、结论: 七、参考: 一、说明 最近,我参加了…

机器学习筑基篇,​Ubuntu 24.04 编译安装 Python 及多版本切换

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] Ubuntu 24.04 编译安装最新Python及多版本切换 描述:说到机器学习,人工智能,深度学习不免会提到Python这一门编程语言(人生苦短,及时Pyt…

蓝桥杯开发板STM32G431RBT6高阶HAL库学习FreeRtos——FreeRTOS任务调度方式

一、任务调度方式 1.1抢占式调度(不同优先级) 主要是针对优先级不同的任务,每个任务都有一个优先级, 优先级高的任务可以抢占优先级低的任务。1.2时间片调度(同优先级) 主要针对优先级相同的任务&#x…

三、虚拟机连接外网

来源网站:山海同行 来源地址:https://shanhaigo.cn 本篇资源:以整理分类并关联本篇地址 本篇地址:https://shanhaigo.cn/courseDetail/1805875642621952000 一、配置虚拟机 1. 选择NAT模式 编辑虚拟网络设置,选择NAT…

A Threat Actors 出售 18 万名 Shopify 用户信息

BreachForums 论坛成员最近发布了涉及 Shopify 的重大数据泄露事件。 据报道,属于近 180,000 名用户的敏感数据遭到泄露。 Shopify Inc. 是一家总部位于安大略省渥太华的加拿大公司。 开发和营销同名电子商务平台、Shopify POS 销售点系统以及专用于企业的营销工…

SQL脚本初始化数据

创建或选择某个数据库,运行窗口输入:source,再拖入文件,回车即可; 虽然也可以使用图形化工具初始化数据,但是他会有内存限制,也就是较大的sql文件不可以初始化,而运行窗口没有sql文件大小限制&…

纹波和噪声的介绍以及区别

纹波和噪声的介绍 纹波和噪声都是在电源输出中出现的信号波动,但两者存在明显的区别。   纹波:是附着于直流电平之上的包含周期性与随机性成分的杂波信号。在额定输出电压、电流的情况下,纹波指的是输出电压中的交流电压的峰值 。狭义上的纹…

[Godot3.3.3] – 人物死亡动画 part-2

前言 在上一个 part 中已经完成了大部分的逻辑,现在进行一些新的修改。 增加重力 首先将 PlayerDeath 中的 AnimationPlayer 设置为自动播放。 返回 PlayerDeath.gd 并增加一个重力 300,防止玩家的尸体腾空运动。 var gravity 1000 _process 函数中…

短信验证码实现

一、设置AccessKey 创建用户并配置使用权限,使我们拥有调用 aliyunAPI 的权限,之后会生成 AccessKeyID 和 AccessKey密码,后面我们会使用到。需要注意的是 AccessKeyID 和 AccessKey密码生成后我们需要将他保存起来,否则后期无法查…

基于Android Studio订餐管理项目

目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 能够实现登录,注册、首页、订餐、购物车,我的。 用户注册后,登陆客户端即可完成订餐、浏览菜谱等功能,点餐,加入购物车,结算,以及删减…

非NI GPIB卡与LabVIEW兼容性分析

在许多测试和测量应用中,通用接口总线(GPIB)是一种广泛使用的标准。尽管国家仪器公司(NI)提供的GPIB硬件和LabVIEW软件的组合被广泛接受和使用,但成本可能较高。因此,一些用户会考虑使用其他厂商…

科研绘图系列:R语言两组数据散点分布图(scatter plot)

介绍 展示两组数据的散点分布图是一种图形化表示方法,用于显示两个变量之间的关系。在散点图中,每个点代表一个数据点,其x坐标对应于第一组数据的值,y坐标对应于第二组数据的值。以下是散点图可以展示的一些结果: 线性关系:如果两组数据之间存在线性关系,散点图将显示出…

基于机器学习(霍特林统计量,高斯混合模型,支持向量机)的工业数据异常检测(MATLAB R2021B)

近年来,隨着集散控制系统、工业物联网、智能仪表等信息技术在现代工业生产系统中的应用,生产过程的运行状态能够以大量数据的形式被感知和记录。基于数据的故障诊断方法以过程数据为基础,采用统计分析、统计学习、信号处理等方法,…

DNS正向解析与反向解析实验

正向解析 安装bind软件 [rootlocalhost ~]# dnf install bind bind-utils -y修改主配置文件/etc/named.conf [rootlocalhost ~]# vim /etc/named.conf重启DNS服务(named) [rootlocalhost ~]# systemctl restart named编辑数据配置文件。在/var/named…