git仓库清理瘦身解决 .git文件夹过大的问题

news2025/2/24 9:39:17

git仓库清理找了很多资料和方案都没有很完美执行成功的;现在找到一个完美方案,分享给大家;希望能帮助大家

问题

1、gitlab代码开发了仓库开发了五年了,代码只有10M;clone的时候要700多兆很浪费时间
2、创建分支和切换分支耗时,导致电脑崩溃
3、公司内部接入codereview服务;因为项目过大服务器承载不了,接入失败

git仓库过大的原因:
1、历史提交的文件,后来删除了,但是.git\objects\pack还会记录保持这些文件
2、git rev-list --objects --all | grep “$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -500 | awk ‘{print$1}’)”
执行上面命令,查看前500个大文件;发现全是dist目录的文件上传有2000多个
在这里插入图片描述

解决方案:

方案一:(2个小时耗时,不保证成功)

下面通用方案不行了;这种方法清理非常耗时而且代码分支多的不容易成功

清理文件
git filter-branch --force --index-filter "git rm -rf --cached --ignore-unmatch 文件/文件夹" --prune-empty --tag-name-filter cat -- --all
# 查看历史大文件
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
# 从历史中删除 target/ 这个文件夹
git filter-branch --force --index-filter 'git rm -r  --cached --ignore-unmatch target/' --prune-empty --tag-name-filter cat -- --all
# 执行仓库压缩
git gc --prune=now
# 推送到远程仓库
git push origin --force --all

推荐方案二BGF工具清理:(亲测有效10分钟搞定)

必备条件
1、安装java环境(java安装教程)
2、下载好bfg的jar包 (下载链接-官网右上角 download 按钮进行下载);

第一步:克隆你的项目.git文件

加–mirror是只clone你项目的.git文件
在这里插入图片描述

第二步:把你下载的bfg的jar包复制到这个项目同目录下

在这里插入图片描述

第三步:执行命令查看大文件的目录(500个文件)

git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -500 | awk '{print$1}')"

在这里插入图片描述

第四步:最重要的一步

java -jar bfg-1.14.0.jar --delete-folders {dist} --no-blob-protection frontend_saas.git

一分钟左右1500个dist目录里的文件会全部清除很快;比git filter-branch两个小时快多了

第五步:执行GC压缩

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

第六步:推送到远程

git push --mirror

第七步:注意项目开发的的小伙伴要全部重新clone项目开发;注意一定不能在原来400多兆都是项目里开发提交,这样项目的垃圾文件又会恢复,前功尽弃;

在这里插入图片描述

总结:到这里就大功告成了;446M的项目清理之后只有23.7M干净很多;

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

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

相关文章

Java泛型通配符的使用

目录 泛型在继承方面的体现 类A是类B的父类,G和G二者不具有子父类关系,二者是并列关系 类A是类B的父类,A是B的父类 通配符的使用 类A是类B的父类,G和G是没有关系的,二者共同父类是:G 使用通配符后,数…

Linux学习记录——칠 git、gdb部分基础知识以及进度条小程序

文章目录一、/r/n二、简单理解缓冲区概念三、进度条四、了解git五、初步学会使用gdb1、背景知识2、部分简单指令一、/r/n 在写小程序之前,我们先看一下/r和/n的区别。 /n我们遇到过,它叫做换行符。/r并不知道是什么符号。实际应用中,/n可以起…

鲍春健:从“走进客户”奔向“成为客户”

站在当下来看,小鹅通的服务力的特殊性在于其可以穿透三层,即以自身的服务力赋能客户的服务力。其中,一层是客户;一层是客户的服务;一层是客户的客户。 作者|斗斗 出品|产业家 累计终端用户数达8.2亿、最高日活14…

mysql系列之索引(待续)

目录一、索引简述1、什么叫索引2、索引的优缺点3、索引的使用场景二、索引的算法1、线性查找 Linear Search2、二分查找 Binary Search3、二叉查找树 Binary Search Tree4、平衡二叉树 AVL Tree5、B树6、B树三、B树和B树的理解1、B树和B树的区别2、数据库为什么使用B树而不是B树…

第二章.线性回归以及非线性回归—一元线性回归,代价函数,相关系数,决定系数

第二章.线性回归以及非线性回归 2.1 一元线性回归 1.概念: 1).自变量: 被用来进行预测的变量,相当于输入 2).因变量: 被预测的变量,相当于输出 3).回归分析: 用来建立方程模拟两个或者多个变量之间如何关…

从零开始学习Maven

maven Maven是apache公司开发的基于项目对象模型(POM) 可以通过一些描述信息来管理项目的构建、报告和文档的软件管理工具。 Maven 是用来管理项目,进行项目构建的一个软件。 java编写 项目构建流程: 1. 导入jar包 2. 配置文…

【MyBatis】RC隔离级别下,MyBatis 一级缓存、二级缓存造成的不一致情况

前言 数据库的MVCC 及 锁机制保证了数据的隔离、一致性。而建立在数据库之上的缓存,都会破坏掉数据库的一致性保障。本文探索在RC隔离级别下,MyBatis 一级缓存、二级缓存造成的坑。顺便复习一下 Spock 的用法,更加体验到了 Groovy 清爽的语法…

insert唯一索引加锁流程

MySQL版本:8.0.29 测试表: 测试数据: 开始测试: 事务1执行 加锁分析: mysql> SELECT * FROM performance_schema.data_locks\G *************************** 1. row ***************************ENGINE: INNO…

Express 中使用JWT进行登录验证

cookie 篇 : Node.js 中 cookie的验证登录 | session 篇 : Node.js 中 session验证登录 在前面讲过了两种验证登录的方式,其一是cookie,其二是session;那么在讲JWT之前先来简单的回顾这两种方式区别;cookie和sessi…

Java笔记023-包装类、String类、字符串的特性、String类、StringBuffer类、StringBuilder类

常用类包装类包装类的分类1、针对八种基本定义相应的引用类型-包装类2、有了类的特点,就可以调用类中的方法基本数据类型包装类booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongfloatFloatdoubleDouble包装类和基本数据的转换演示包装类和基本数据…

LInux目录结构

文章目录Linux的目录结构Linux的目录结构Linux路径的描述方式目录各功能介绍HOME目录和工作目录Linux的目录结构 Linux的目录结构 Linux的目录结构是一个树型结构。 Windows 系统可以拥有多个盘符, 如 C盘、D盘、E盘 Linux没有盘符这个概念, 只有一个根目录 /, 所有文件都在…

【UE4 第一人称射击游戏】37-拾取副武器“M4A1”

上一篇:【UE4 第一人称射击游戏】36-切换武器时改变UI本篇效果:在拾取副武器“M4A1”前,点击键盘2键是无法切换武器的,当拾取武器后,点击键盘2键可以切换武器(目前仅是右下角的图标和文字实现了切换&#x…

VBA小模板,一个不放回的抽奖用的例子

1 问题 一个不放回的抽奖用VBA怎么写,下面用一个类似对对碰/ 翻牌子的游戏(抽到的奖励不放回,可抽的东西越来越少)来举例说明 1.1 首先要回顾下几个经典的随机模型 古典概型,重点就是每次抽奖的各个奖品,概…

宇视门禁一体机接线图

宇视门禁一体机接线图宇视门禁一体机带反馈信号电磁锁接线图门禁的GND线通用,可以连到同一根线上,也可以分开连简单整理如图一体机线颜色和功能对应表颜色线路绿色RS485_A粉色RS485_B黑色GND蓝色WIEGAND_OUT_D0白色WIEGAND_OUT_D1灰色WIEGAND_IN_D0棕色W…

测试面试真题|工作2年,从小厂到大厂,薪资翻倍是怎样的体验?

最近,霍格沃兹测试学院学员 C 同学成功拿下某互联网大厂年薪 30W 测试开发岗位 Offer,顺利完成从手工测试工程师到测试开发的逆袭,薪资翻倍(涨幅 100%),并获得了学院颁发的优秀学员奖学金。C 同学工作刚满 …

【3D目标检测】Delving into Localization Errors for Monocular 3D Object Detection

目录概述细节错误分析概述 本文是基于单目图像的3D目标检测方法。 【2021】【MonoDLE】 研究的问题: 核心问题:如何提高基于单目图像的3D目标检测的效果。作者量化了每个子任务的整体影响,观察到以下现象 观察一:定位误差是制约目标检测性…

变异凯撒题解

题目变异凯撒,说明没有使用一般的凯撒加密看到一个密码,我们可以找一下规律首先密文不完全是字母,但是经典凯撒加密的密文一定都是字母,说明这个题目可能是ASCLL码表偏移,而不是字母表偏移经典凯撒加密是字母和字母的偏…

SSM纯注解后台代码整合(Spring+SpringMvc+Mybatis)

SSM后台整合(SpringSpringMvcMybtis事务Rest风格统一结果封装统一异常处理拦截器) 文章目录1 基础环境搭建1.1 建表1.2 创建web项目1.3 导入依赖坐标(pom.xml)1.4 包路径的创建1.5 在pojo包下编写book实体类1.6 在webapp包下导入静…

很多人还不知道中视频计划手机上发布多端横竖屏视频的方法

如果说你刚开始接触中视频,你必须要学会的小知识。 横屏视频是16;9的视频,一般是手机横向拍摄的视频。 上传这样的视频有两种方法。第一种是需要用到电脑,第二种就是我今天要分享的这种,没有电脑,我们用手…

测试新人入职第一天都做什么?

测试入职第一天都做什么? 大家都知道,入职一家新公司就是一个新的起点,新的开始。不管在之前公司干了多久,还是第一次踏入社会进入企业上班,都需要遵守新公司的规则以及规章制度。不管企业的规章制度是什么&#xff0…