git 仓库中删除历史大文件
git 仓库中删除历史大文件
在git中增加了一个很大的文件,而且被保存在历史提交记录中,每次拉取代码都很大,速度很慢。而且用删除
提交历史记录的方式不是很实际。
以下分几个步骤介绍如何减小.git文件夹
1.显示10个最大的文件id列表
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -10
$ git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -10
f830d5449f307e45915c2544dfef902cfbfab5d9 blob 3714990 2811488 60010494
986d0c3904de8a3b08c17b5feb9f29da442ebfd4 blob 5912773 5542283 31754
c1fd4cf06c9836d1bbd0344729af99a9e5e5f32c blob 7959920 7872976 234245152
90d45f4b62ce20fb4ff733e83267152951edad97 blob 28553670 28557775 205684107
a2f423946a59e4a2c83955f4af4d19dc1f048e5f blob 45041599 43163608 74595714
4949ea380952b32c412943ed77fb36fd5be35e84 blob 45337600 7431701 62822673
4564140f9e8ee9fefb65db2ae33a8b8a90dc29d3 blob 54272873 54107977 242200239
09401d185a5cdafadc33105b1d62b868328c0dba blob 54639114 54423305 5574037
6562f64e52e205bce49f9611e04e82a0e0f956db blob 129540654 82626130 122357710
3b08a747589895bdc995cd18ae1fe9e70abcd417 blob 697131332 691555610 296308295
2. 根据文件id查询文件路径
git rev-list --objects --all | grep 3b08a747589895bdc995cd18ae1fe9e70abcd417
$ git rev-list --objects --all | grep 3b08a747589895bdc995cd18ae1fe9e70abcd4173b08a747589895bdc995cd18ae1fe9e70abcd417 yunos_compile/aarch64-linux-gnueabi-4.9-glibc-2.20.tgz
3. 移除文件
git log --pretty=oneline --branches -- your_file
$ git log --pretty=oneline --branches -- yunos_compile/aarch64-linux-gnueabi-4.9-glibc-2.20.tgz8cc32c6b75122f204f4d3efdba30130759076731 add Sparrow monkey test user a32477a611de0e8c60f6e58f7690a759b6577bd4 add yunos_compile
4. 删除文件的历史记录
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch --ignore-unmatch your_file' --prune-empty --tag-name-filter cat -- --all
5. 提交
git push --force --all
如果出现提示remote: GitLab: You are not allowed to force push code to a protected branch on this project.
需要在gitlab里面取消分支protected
6. 清除本地缓存
rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
git prune
git 仓库中删除历史大文件的更多相关文章
- 在git多分支repo仓库中彻底清除大文件
坑的由来 repo中不小心上传了许多测试生成的data.结果可想而知,原本只有代码的仓库突然间变得无比臃肿(或者是慢慢臃肿),从早期的几十MB,迅速飙升至1G. 到底发生了什么 早些时候我对git的原 ...
- 永久清理git中的历史大文件
原文发布于:https://www.chenxublog.com/2019/05/26/remove-git-big-files.html 有写老的git仓库,因为当年的无知,不会用.gitignor ...
- 忽略Git仓库中已经存在的文件
解决方案 使用Git bash进入到要忽略的文件所在的文件夹,执行以下命令即可 git update-index --assume-unchanged rebel.xml 参考 Ignore Git ...
- git忽略文件并删除git仓库中的文件
问题描述 不慎在创建.gitignore 文件之前的时候将文件push到了 git仓库,即使之后在.gitignore文件中写入新的过滤规则,这些规则也不会起作用的,git依然会对所有git仓库中的 ...
- 如何永久删除git仓库中敏感文件的提交记录
如何永久删除git仓库中敏感文件的提交记录 参考: 1. https://help.github.com/articles/remove-sensitive-data/
- 如何删除GIT仓库中的敏感信息
如何删除GIT仓库中的敏感信息 正常Git仓库中应该尽量不包含数据库连接/AWS帐号/巨大二进制文件,否则一旦泄漏到Github,这些非常敏感信息会影响客户的信息安全已经公司的信誉.公司可能其它还有相 ...
- 由于github仓库中提前建立readme文件,导致git push报错error: failed to push some refs to 'git@github.com:
$ git push -u origin master To git@github.com:xxx/xxx.git ! [rejected] master -> master (fetch fi ...
- 使用 .gitignore 忽略 Git 仓库中的文件
.gitignore 在Git中,很多时候你只想将代码提交到仓库,而不是将当前文件目录下的文件全部提交到Git仓库中,例如在MacOS系统下面的.DS_Store文件,或者是Xocde的操作记录,又或 ...
- git 恢复工作区删除的所有文件
/********************************************************************* * git 恢复工作区删除的所有文件 * 说明: * 今天 ...
随机推荐
- SQLServer版本
- 关于vue-router 中参数传递的那些坑(params,query)
1.query方式传参和接受参数 传参 this.$router.push({ path:'/xxx' query:{ idname:id } })接收的方式:this.$route.query.id ...
- 关于AI
自己看着办吧 http://tieba.baidu.com/p/6008409988?fr=ala0&pstaala=1&tpl=5&fid=93764&isgod=0
- 安装nova后解决登录没账号问题
找到laravel安装目录执行php artisan nova:user
- SQL随记(四)
1.for loop 循环 格式:for index in lower .. upper loop end loop; for i in 1 .. g_descTbl.count loop if ( ...
- docker 删除镜像
有时候我们不需要某个镜像,需要对它进行删除.1.停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q) 如果想要删除所有cont ...
- JAVA中循环删除list中元素的方法总结【转】
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...
- 深入浅出mybatis之缓存机制
目录 前言 准备工作 MyBatis默认缓存设置 缓存实现原理分析 参数localCacheScope控制的缓存策略 参数cacheEnabled控制的缓存策略 总结 前言 提到缓存,我们都会不约而同 ...
- (一)初探Maven之本地安装与配置本地仓库
引言: 大多数IDE都会自带maven,如果你打开c盘用户目录,你会看到一个.m2文件这就是编译器自带maven的仓库父目录,但由于其在C盘和其他原因,一般我们会自己重新安装mave ...
- python学习07
函数中的模块及包管理1)1.模块查找的顺序:运行代码时当前目录 -> PYTHONPATH ->系统环境变量PATH设置的路径2.导入模块的书写规范:内置模块-------第三方模块--- ...