一、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. PythonDay2Base

    PythonDay2Base 前文见上一篇文章 数据类型详解 字符串 str 补充 startswith 判断字符串是否以某个小字符串开头 s1 = "shujia数加科技学习study&q ...

  2. Nuxt.js 应用中的 request 事件钩子

    title: Nuxt.js 应用中的 request 事件钩子 date: 2024/12/4 updated: 2024/12/4 author: cmdragon excerpt: 在构建现代 ...

  3. 一个.NET开源、免费、功能强大的 PDF 处理工具

    前言 在日常工作中PDF文档的处理往往受限于其固有的格式,使得用户在编辑.合并.剪裁等方面面临诸多不便.今天大姚给大家分享一个.NET开源.免费.功能强大的 PDF 处理工具:PDF 补丁丁(PDFP ...

  4. 《Django 5 By Example》阅读笔记:p521-p542

    <Django 5 By Example>学习第 18 天,p521-p542 总结,总计 22 页. 一.技术总结 1.django-parler django-parler 用于 mo ...

  5. openEuler欧拉安装Docker

    ​1. dnf配置 # 更新镜像源缓存 dnf makecache # 修改chrony时间同步配置 sed -i 's/pool pool.ntp.org iburst/pool ntp.aliyu ...

  6. blender low poly + unity 3d游戏制作

    会是一个有趣的方向,适合独立游戏制作人,独立动画电影制作人.

  7. SpringSecurity认证流程分析

    重要组件 SecurityContext 上下文对象,Authentication(认证)对象会放在里面 SecurityContextHolder 用于拿到上下文对象的静态工具类 Authentic ...

  8. mac上遇到的错误sed command a expects followed by text

    上简单的替换操作 sed -i 's/apple/mac/g' full-path-file 执行后报错,"sed: 1: command a expects \ followed by t ...

  9. Karmada v1.12 版本发布!单集群应用迁移可维护性增强

    本文分享自华为云社区<Karmada v1.12 版本发布!单集群应用迁移可维护性增强>,作者:云容器大未来. Karmada 是开放的多云多集群容器编排引擎,旨在帮助用户在多云环境下部署 ...

  10. Qt音视频开发41-文件推流(支持网页和播放器播放并切换进度)

    一.前言 本功能最初也是有一些人提过类似的需求,就是能不能将本地的音视频文件,通过纯Qt程序推流出去,然后用户可以直接在网页上播放,也可以用各种播放器播放,然后还可以任意切换播放进度,其实说白了就是个 ...