Git仓库瘦身大作战:133M 到 4M 的实战

news2024/11/15 11:04:12

开局两张图

瘦身前瘦身后

目录

  • 开局两张图
  • 前言
  • 下载 BFG
  • 克隆代码
  • Git 仓库瘦身
    • 清理存储库
    • 储存库 GC
    • 推送仓库
  • Git 瘦身验证
  • 结语
  • 开源项目

前言

在进行项目开发的过程中,代码仓库的体积可能会逐渐增大,特别是在版本控制系统中保留了大量的历史提交记录和不必要的文件。为了减小仓库的体积,提高代码仓库的整体性能,我们可以通过一些工具来进行仓库瘦身操作。下面是一组图片,展示了一个示例项目在瘦身前后的效果。

下载 BFG

首先,我们需要下载BFG Repo-Cleaner工具。可以在临时文件夹中新建一个文件夹(例如D:\Temp),然后通过以下链接下载 BFG Repo-Cleaner

https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar

克隆代码

在下载BFG之后,我们需要克隆远程Git仓库。打开文件夹 D:\Temp,右键选择 Git Bash Here,然后执行以下命令来克隆远程仓库:

git clone --mirror https://gitee.com/youlaiorg/vue3-element-admin.git

这将在当前文件夹中创建一个名为 vue3-element-admin.git 的裸仓库。

查看下瘦身前的文件大小

Git 仓库瘦身

🌈参考官网:https://rtyley.github.io/bfg-repo-cleaner/

清理存储库

使用 BFG Repo-Cleaner 可以删除一些不必要的文件,以减小仓库的体积。以下是一些清理操作的示例:

  • 删除超过 1MB 的文件:
java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 1M vue3-element-admin.git

  • 删除特定文件夹(例如.vscode):
java -jar bfg-1.14.0.jar --delete-folders .vscode vue3-element-admin.git
  • 删除特定文件(例如package-local.json):
java -jar bfg-1.14.0.jar --delete-files package-local.json vue3-element-admin.git

储存库 GC

清理操作会更新提交历史,但并不会物理删除不需要的内容。为了彻底删除不需要的数据,我们需要运行Git的垃圾收集命令:

cd vue3-element-admin.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive

推送仓库

完成清理和储存库 GC 之后,将更新后的仓库推送到远程仓库:

cd vue3-element-admin.git
git push

Git 瘦身验证

重新克隆代码,然后运行以下命令来查看仓库的大小:

git count-objects -vH

结语

通过 BFG Repo-Cleaner 工具,我们成功地瘦身了 Git 仓库,减小了仓库的体积。这样不仅有助于提高代码仓库的性能,还能节省存储空间,使代码管理更加高效。在项目开发中,定期进行仓库瘦身是一个良好的实践,可以保持仓库的健康状态。

开源项目

  • 微服务商城项目
GithubGitee
开源组织有来开源组织有来开源组织
后端youlai-mall 📖youlai-mall 📖
前端mall-admin🌎mall-admin 🌎
移动端mall-app 🌎mall-app 🌎
  • 前后端分离项目
GithubGitee
开源组织有来开源组织有来开源组织
后端youlai-boot 📖youlai-boot 📖
前端vue3-element-admin 🌎vue3-element-admin 🌎# 开源项目

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

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

相关文章

apple macbook M系列芯片安装 openJDK17

文章目录 1. 查找openjdk版本2. 安装openjdk3. 多jdk之间的切换 在这里我们使用 brew 命令查找并安装。 1. 查找openjdk版本 执行:brew search openjdk,注意:执行命令后,如果得到的结果中没有红框内容,则需要更新一下…

使用STM32+SPI Flash模拟U盘

试验目的:使用STM32F103C8T6 SPI Flash(WSQ16)实现模拟U盘的功能 SPI Flash读写说明: Step1 设置SPI1 用于读取SPI Flash; Step2:设置SPI Flash 的使能信号 Step3:使能USB通信 Step4&#xf…

一起学docker系列之九docker运行mysql 碰到的各种坑及解决方法

目录 前言1 Docker 运行mysql命令2 坑一:无法读取/etc/mysql/conf.d目录的问题3 坑二:/tmp/ibnr0mis 文件无法创建/写入的问题4 坑三:Navicat 连接错误(1045-access denied)5 坑四:MySQL 登录失败问题结语 …

25 Linux I2C 驱动

一、I2C简介 I2C老朋友了,在单片机里面也学过,现在再复习一下。I2C使用两条线在主控制器和从机之间进行数据通信。一条是 SCL(串行时钟线),另外一条是 SDA(串行数据线),这两条数据线需要接上拉电阻,总线空闲的时候 SCL…

NX二次开发UF_CURVE_ask_curve_struct_data 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_curve_struct_data Defined in: uf_curve.h int UF_CURVE_ask_curve_struct_data(UF_CURVE_struct_p_t curve_struct, int * type, double * * curve_data ) overview…

leetcode:随机链表的复制

题目描述 题目链接:138. 随机链表的复制 - 力扣(LeetCode) 题目分析 这个题目很长,但是意思其实很简单:就是一个单链表,每个结点多了一个指针random随机指向链表中的任意结点或者NULL,我们血需…

CMSIS-DSP实数FFT相关API(单精度浮点float)

目录 1. CMSIS-DSP的实数FFT 2. 频域上求模值 3. 如何求解相位 4. 对比python的求解过程 5. 在频域上以模和相角的方式还原信号 6. 求能量值 平台:STM32F407-DiscoveryCMSIS-DSP-V1.6.0 1. CMSIS-DSP的实数FFT 文件:\CMSIS\DSP\Source\Transform…

模板初阶(1):函数模板,类模板

一、函数模板 1.1 概念 函数模板代表了一个函数家族&#xff0c;该函数模板与类型无关&#xff0c;在使用时被参数化&#xff0c;根据实参类型产生函数的特定类型版本。 格式&#xff1a; template <typename T>或template <class T> template <class T>…

蓝桥杯第597题 跑步锻炼 C++ 日期模板题(模拟经典)

题目 跑步锻炼https://www.lanqiao.cn/problems/597/learning/?page1&first_category_id1&name%E8%B7%91%E6%AD%A5%E9%94%BB%E7%82%BC 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小蓝每天都锻炼身…

CTFUB-web前置技能-HTTP协议

burp抓包,抓第二次的 修改请求方式为CTFHUB

操作系统的基本特性--并发、共享、虚拟、异步

批处理系统具有高资源利用率和系统吞吐量&#xff1b;分时系统能够获得及时响应&#xff1b;实时系统具有实时特征。而这三种系统都具有并发、共享、虚拟和异步四个基本特征 一、并发 OS通过并发提高系统中的资源利用率&#xff0c;增加系统的吞吐量 1.并行和并发 并行&…

利用Nginx与php处理方式不同绕过Nginx_host实现SQL注入

目录 首先需要搭建环境 nginxphpmysql环境&#xff1a; 搭建网站 FILTER_VALIDATE_EMAIL 绕过 方法1&#xff1a;冒号号分割host字段 方法2&#xff1a;冒号号分割host字段 方法3&#xff1a;SNI扩展绕过 首先需要搭建环境 nginxphpmysql环境&#xff1a; php安装包&a…

从0开始学习JavaScript--深入了解JavaScript框架

JavaScript框架在现代Web开发中扮演着关键角色&#xff0c;为开发者提供了丰富的工具和抽象层&#xff0c;使得构建复杂的、高性能的Web应用变得更加容易。本文将深入探讨JavaScript框架的核心概念、常见框架的特点以及它们在实际应用中的使用。 JavaScript框架的作用 JavaSc…

算法-中等-链表-两数相加

记录一下算法题的学习11 两数相加 题目&#xff1a;给你两个非空的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照逆序的方式存储的&#xff0c;并且每个节点只能存储一位数字。请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。你可以假设除了数字…

Re54:读论文 How Context Affects Language Models‘ Factual Predictions

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称&#xff1a;How Context Affects Language Models’ Factual Predictions ArXiv网址&#xff1a;https://arxiv.org/abs/2005.04611 2020年AKBC论文&#xff0c;作者来自脸书和UCL。 本文主要关注…

【Amazon】安装卸载AWS CLI操作流程(Windows 、Linux系统)

AWS 命令行界面&#xff08;AWS CLI&#xff09;是用于管理 AWS 产品的统一工具。只需要下载和配置一个工具&#xff0c;您就可以使用命令行控制多个 AWS 产品并利用脚本来自动执行这些服务。 AWS CLI v2 提供了多项新功能&#xff0c;包括改进的安装程序、新的配置选项&#…

亚马逊云科技向量数据库助力生成式AI成功落地实践探秘(一) ​

随着大语言模型效果明显提升&#xff0c;其相关的应用不断涌现呈现出越来越火爆的趋势。其中一种比较被广泛关注的技术路线是大语言模型&#xff08;LLM&#xff09;知识召回&#xff08;Knowledge Retrieval&#xff09;的方式&#xff0c;在私域知识问答方面可以很好的弥补通…

[HCIE] IPSec-VPN (手工模式)

概念&#xff1a; A. IPSec&#xff1a;是对IP的安全性补充&#xff0c;工作在IP层&#xff0c;为IP网络通信提供安全服务。 B.安全联盟SA&#xff1a;是通信对等体之间对某些要素的协定。 C. IPSec安全联盟简称 IPSec SA.通常成对建立&#xff08;inbound和outbound&#x…

Spring Boot - 瘦身大作战:优雅应对Spring Boot Fat Jar

文章目录 Fat Jar瘦身pom修改copy lib启动 -Dloader.path验证 源码分析前置阅读spring-boot-loader 依赖类继承关系PropertiesLauncher属性配置 附 pom.xml Fat Jar 【pom.xml】 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"ht…

人机交互2——任务型多轮对话的控制和生成

1.自然语言理解模块 2.对话管理模块 3.自然语言生成模块