一、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. 压缩工具之upx

    在golang项目中, 最终运行的是打包好的二进制文件,如何才能让这个文件尽可能的小呢? 1.编译阶段的参数处理 go build使用的是静态编译,会将程序的依赖一起打包,这样一来编译得到的可执行文件 ...

  2. MySQL 8.0 为什么会放弃查询缓存?

    什么是查询缓存? 查询缓存就是将一次查询结果存储在内存中,假如下一次查询结果在内存中,就直接在内存中读取. 设计初衷 当然是提高性能,通过缓存来减少解析器.优化器.存储引擎的执行时间. MySQL查询 ...

  3. Spring Boot 使用 slf4j 进行日志记录

    SLF4J,即简单日志门面(Simple Logging Facade forJava),不是具体的日志解决方案,它只服务于各种各样的日志系统.按照官方的说法,SLF4J 是一个用于日志系统的简单Fa ...

  4. Python 学习记录 (4)

    Plotly常见可视化方案:以鸢尾花数据为例 简单介绍: Ploty库也有大量统计可视化方案,并且这些可视化方案具有交互化属性. 主要对鸢尾花数据进行处理与可视化. 所展示的结果为交互界面的截图情况, ...

  5. 精橙FPGA,一个承接FPGA代码设计的资深工程师团队。

    一.我们是谁 精橙FPGA,一个承接FPGA代码设计的资深工程师团队. 二.服务内容 面向在校学生.职场工程师等人员,提供FPGA入门指导和FPGA代码设计外包服务. 三.业务范围 主要提供Xilin ...

  6. PCB设计AD规则设置(按照嘉立创设置)

    本文转载自https://blog.csdn.net/subtitle_/article/details/121648972 官方参考https://www.jlc.com/portal/vtechn ...

  7. 数据万象AVIF图片压缩 - 小程序省流量利器

    导语 微信小程序因其便捷的开发环境和天然的微信生态,使得越来越多企业平台通过小程序建立自己的业务.在小程序上使用图片非常广泛,但传统格式图片(如 JPG/PNG)占用空间大,加载速度慢,可能导致昂贵的 ...

  8. IOS CABasicAnimation实现旋转动画

    IOS CABasicAnimation实现旋转动画 定义一个CABasicAnimation lazy var rotateAnimation: CABasicAnimation = { let a ...

  9. 【信号与系统】求使系统稳定的常数K的范围

  10. kubeadm init问题

    1.解析不到对应的主机 [WARNING Hostname]: hostname "k8s-master-01" could not be reached  [WARNING Ho ...