一、git项目上传后项目文件太大,git filter-branch手动清理

最近发现一个项目git目录已经达到200MB,严重影响了clone代码。操作之前请全量备份代码,操作失误可恢复

二、测试项目存储主键增大流程

2.1、建立远程仓库
为了模拟团队协作,需要一个远程仓库,可以选择GitHub或码云上建立仓库,这里选择码云 ,仓库名字为 gitthin,地址为 git@gitee.com:coderhony/gitthin.git。

2.2、克隆代码到本地

cd ~/Desktop/
git clone git@gitee.com:coderhony/gitthin.git

2.3 模拟提交操作,开始写代码提交

echo -n "战国是一个群国争雄的时代,今天的故事就从战国开始" > zhanguo.txt
git add .
git commit -m "创建了zhanguo.txt文件"
echo -n "战国的开端是由赵魏韩三家分晋开始,从此战国进入七雄争霸的时代" >> zhanguo.txt
git add .
git commit -m "战国开端"
echo -n "这七个国家分别是:秦、齐、楚、燕、魏、赵、韩" >> zhanguo.txt
git add .
git commit -m "七个国家的名字"
echo -n "秦国地处西陲,楚国位居南方,齐国傲居东海,燕国地处北面,魏国、赵国、韩国三国在中间" >> zhanguo.txt
git add .
git commit -m "七国的地理位置" # 切换分支
git checkout -b qinguo
echo -n "战国开始时,秦国还比较贫弱,一直受东边的魏国欺负,今天魏国夺占五城,明天秦国抢回三城,一直处于这种状态" > qinguo.txt
git add .
git commit -m "创建了qinguo.txt文件"
echo -n "当时的魏国很强大,魏文侯时期,启用李悝变法,使魏国经济富庶,后来有任用吴起训练魏武卒,一直不断蚕食着秦国" >> qinguo.txt
git add .
git commit -m "秦国受魏国欺负"
echo -n "这种情况到秦孝公时开始有所好转,秦孝公启动商鞅,进行变法,奖励农耕,奖励军功,经过了二十年,秦国已不容小觑矣" >> qinguo.txt
git add .
git commit -m "秦孝公启用商鞅变法"

2.4 生成大文件

perl -le 'for (1..1000000) { print map { (0..9, "a".."z")[rand 36] } 1..80 }' > bigqin
git add .
git commit -m "商鞅变法,秦国战斗力直线上升"
 
在该大文件的内容后面,追加一些内容:
perl -le 'print map { (0..9, "a".."z")[rand 36] } 1..80' >> bigqin
git add .
git commit -m "又过几年,秦国的战斗力又提高了很多"
 
2.5 查看生成的大文件
查看大小为109M
du -sh .git
 
2.6正常提交
echo -n "秦国变法后一百年,国力不断增强,其他诸侯为之色变,王霸之业已不能满足,开始横扫六合,一统天下,终于在嬴政时期得以实现" >> qinguo.txt
git add .
git commit -m "秦国一统天下"

2.7 切换分支

git checkout master
echo -n "其他六国不断被秦国攻打,闻之色变,但又没有及时变法,寻求强大之道,之后逐个被秦国所灭" >> zhanguo.txt
git add .
git commit -m "其他六国逐个被秦国所灭"
 
2.8 提交到远端
git push origin qinguo
 
2.9 切换master继续提交
git checkout master
echo -n "其他六国不断被秦国攻打,闻之色变,但又没有及时变法,寻求强大之道,之后逐个被秦国所灭" >> zhanguo.txt
git add .
git commit -m "其他六国逐个被秦国所灭"
 
2.10 合并代码
git merge qinguo
 
2.11 【核心】清理大文件bigqin 100多MB文件
先垃圾回收
git gc --prune=now
Git最初向磁盘中存储对象使用松散的格式,后续会将多个对象打包为一个二进制的包文件(packfile),以节省磁盘空间
 
2.12 查找大文件
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -3 | awk '{print$1}')"
 
2.13 删除指定的大文件
git filter-branch --force --index-filter "git rm -rf --cached --ignore-unmatch 文件名usql_server_jar/usql-server.jar" --prune-empty --tag-name-filter cat -- --all
 
2.14 删除缓存,执行后发现.git磁盘存储已经降低
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now
du -sh .git
 
2.15 推送远端
需要先把git master分支保护去除
方式1推荐:替换指定分支git push origin master --force
方式2公司无法执行:git push --mirror http://替换为git地址/替换为项目名.git
方式3:替换远端所有分支git push origin --force --all
 
 
 
参考文档:https://www.jianshu.com/p/7ace3767986a
 
 
 
 
 

maven项目中解决 .git文件太大问题的更多相关文章

  1. 在maven项目中解决第三方jar包依赖的问题

    在maven项目中,对于那些在maven仓库中不存在的第三方jar,依赖解决通常有如下解决方法: 方法1:直接将jar包拷贝到项目指定目录下,然后在pom文件中指定依赖类型为system,如: < ...

  2. maven项目中没有resource文件夹的问题

    之前使用eclipse创建maven项目,文件夹都是建好的,这几次创建,都没有resource文件夹,需要手动创建resource. 现象描述 在eclipse中,创建maven项目有两种方式: 一种 ...

  3. 解决Maven项目中pom.xml文件报错(Failure to transfer....)的问题

    打开pom.xml文件,查看错误,如果错误类型为:Failure to transfer.........之类的,则表明你的pom中依赖的jar包没有完全下载. 解决方法:找到你本地的maven仓库, ...

  4. IDEA中创建maven项目后解决main文件夹下目录不全的问题

    IDEA创建maven-archetype-webapp项目的时候,创建完成后发现在main文件夹下没有java,resource等源文件夹. 解决方法: 1.选择File->Project S ...

  5. 关于:maven项目中pom.xml文件添加依赖无法自动搜索的问题

    用的是eclipse 1.Window------>Show View------->Maven Repositories(这个选项一般不直接显示,而在others里面) 2.操作完毕后会 ...

  6. IDEA创建的Maven项目中 解决编写pom.xml没有提示

    问题如下 没有提示信息 解决方案 把Repositories中的配置更新成本地仓库 问题解决

  7. maven项目中利用jmeter-maven-plugin插件直接执行jmeter jmx脚本

    jmeter脚本需要执行脚本,先得下载jmeter并解压jmeter.如想在maven项目中通过mvn install 直接执行jmx文件,这样就能在测试服务器上通过一个命令就能执行下性能测试了,给自 ...

  8. IDEA的maven项目中 静态文件编译的问题

    IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉. 如果使用的是Eclipse,Eclipse的src目录下的xml等资源 ...

  9. IDEA的maven项目中静态文件编译的路径问题(未测试)

    转自:http://www.cnblogs.com/signheart/p/6625126.html IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进clas ...

  10. Python打包成exe,文件太大问题解决办法

    Python打包成exe,文件太大问题解决办法 原因 解决办法 具体步骤 情况一:初次打包 情况二:再次打包 原因 由于使用pyinstaller打包.py文件时,会把很多已安装的无关库同时打包进去, ...

随机推荐

  1. Linux常用系统性能监控工具

    top 首先关于top命令,我想大家应该都挺熟悉的了. Linux系统下的top命令有点类似于Windows系统里的任务管理器,能够实时动态地给出系统中各个进程的资源占用状况,是Linux下比较常用的 ...

  2. 编译器-FIRST集合

      语法分析器的两个重要函数 FIRST和FOLLOW FIRST的定义 FIRST(α),可从α推导得到的串的首符号的集合 1.如果X是一个终结符,那么FIRST(X) = X 2.如果X是一个非终 ...

  3. 以下哪一项是对CSMA/CA和CSMA/CD LAN控制通用的CSMA方法的适当描述?

    A.   检测载波信号并控制数据传输. B.   获得具有传输权的消息(令牌)的终端传输数据. C.   如果在数据传输过程中发生冲突,立即重新发送. D.   即使在使用传输线时也可以传输数据. = ...

  4. 一款基于 .NET MVC 框架开发、功能全面的MES系统

    前言 今天大姚给大家分享一款基于 .NET MVC 框架开发.功能全面的离散型零部件制造管理系统(MES):EasyMES. 项目介绍 EasyMES一款基于 .NET 6 MVC 框架开发.开源免费 ...

  5. 还在为入门鸿蒙效率慢而困惑?不妨试试开发学习神器 - AI辅助编程

    鸿蒙应用开发从入门到入行 鸿蒙开发神器 - AI辅助编程 CodeGenie介绍 目前有好几款AI插件可以装到DevEco上,出名的例如Copilot.通义灵码等.但是经过猫林老师截至到目前的测试.都 ...

  6. Advanced .NET Remoting: 第 8 章 创建连接器

    第 8 章 创建连接器 上一章向您展示了各种类型的连接器,以及它们对于请求的同步和异步处理过程.到目前为止,我一直忽略的一个最为重要的步骤是:初始化连接器和连接器链.连接器通常既不是直接待代码中创建, ...

  7. 中电金信:技术实践|Flink多线程实现异构集群的动态负载均衡

    导语:Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算.本文主要从实际案例入手并结合作者的实践经验,向各位读者分享当应用场景中异构集群无法做到负载均衡时,如何通 ...

  8. 如何在 Ubuntu 20.04 上安装 MySQL

    https://dev.mysql.com/downloads/mysql/ 简介: MySQL是最流行的开源关系数据库管理系统.它速度快,容易使用,容易扩展,并且流行的LAMP和LEMP的一部分. ...

  9. Spring Security并结合JWT实现用户认证(Authentication) 和用户授权(Authorization)

    引言在Web应用开发中,安全一直是非常重要的一个方面.Spring Security基于Spring 框架,提供了一套Web应用安全性的完整解决方案. JwT (JSON Web Token) 是当前 ...

  10. spring boot 配置多个DispatcherServlet

    传统的web项目,只需要在web.xml里配置多个即可,并且支持多个url-pattern 在spring boot中,我们默认无需配置,系统会自动装配一个,感兴趣的可以看下源码 org.spring ...