当前位置: 首页 > news >正文

git清理--解决.git文件过大问题

背景:为什么.git比我仓库中的文件大很多

        为什么我的git中只有一个1KB的README,但是.git却又1G多?当我想把这个git库push到gitee时,还会报错:

        根据报错信息,可看出失败的原因是:有文件的大小超过1G,超过了限流值:100M。但是,我的仓库中只有1K,为什么会有1G的文件呢?

        再回想一下,我之前曾提交过多个大文件,但是因为是无用的,就把它们都删了,并重新提交了,推测是跟这些提交有关,因为git能回退到某一版本,即能回退到删除文件之前的版本。那么,如果我误提交了一些大文件,该怎么从git中删除呢?

方案

        查看git占用磁盘大小:

git count-objects -vH

        松散对象size为1.34G,包对象size-pack为132.46M,总大小为1.47G。

1. 检查仓库中的大文件:

git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10

执行结果如下:

第三列即为文件的大小,第一列为SHA-1。

2. 关联SHA-1到对应的文件名

git rev-list --objects --all | grep {SHA-1}

执行结果如下:

        本例中,最大的文件是test_file,这是之前误提交的一个大文件,虽然已经删除,但是git中任然存储相应的记录。

3. 重写提交历史

安装git-filter-repo:

pip install git-filter-repo

将git-filter-repo添加到Path,我的路径在这:

C:\Users\ xxx\AppData\Roaming\Python\Python37\Scripts

清理test_file:

git filter-repo --path test_file --invert-paths --force

执行大概需要40s,结果如下:

4. 清理残留数据

git reflog expire --expire=now --all
git gc --prune=now --aggressive

执行完上述步骤之后,查看.git,发现还是很大,于是继续重复上述步骤,删除所有无效文件,最后结果:

可以看到,清理完成之后,文件大小只有1.35K了。

http://www.xdnf.cn/news/47413.html

相关文章:

  • 基于蒙特卡洛模拟与时间序列分析的美的集团财务预测模型研究
  • DeepSeek 助力 Vue 开发:打造丝滑的二维码生成(QR Code)
  • 常用的验证验证 onnxruntime-gpu安装的命令
  • WIN10重启开机不用登录,直接进入桌面
  • Java【网络原理】(4)HTTP协议
  • Redis 的几种数据类型
  • 【Linux我做主】GDB调试工具完全指南
  • Pandas数据可视化
  • UE5 UI 教程系列全集
  • 从入门到精通汇编语言 第六章(中断及外部设备操作)
  • C++ 相关系统软件简介与学习方法【最水的一期】
  • An Improved Fusion Scheme for Multichannel Radar Forward-Looking Imaging论文阅读
  • 代码随想录算法训练营第二十二天(补)
  • Java8-遍历list取出两个字段重新组成list集合
  • linux常用基础命令_最新版
  • 【AI 加持下的 Python 编程实战 2_07】第七章:基于 Copilot 完整演示问题分解能力在实际问题中的落地应用
  • 虚拟教学助理应用系统设计框架
  • 整数分解---ca‘b模板的应用
  • 关于TCP三次握手和四次挥手过程中的状态机、使用三次握手和四次挥手的原因、拥塞控制
  • SpringCloud概述和环境搭建
  • SQL注入之information_schema表
  • C#森林中的兔子(力扣题目)
  • Windows串口通信
  • 嵌入式人工智能应用-第三章 opencv操作 4 灰度处理
  • MySQL 线上大表 DDL 如何避免锁表(pt-online-schema-change)
  • Java 线程池
  • 2024新版仿蓝奏云网盘源码,已修复已知BUG,样式风格美化,可正常运营生产
  • 【C++】 —— 笔试刷题day_22
  • 易语言验证京东滑块轨迹算法
  • 十倍开发效率 - IDEA插件之 Maven Helper