Git删除历史记录(已提交)中的大文件
欢迎关注微信公众号:【 全栈攻略 】
场景
官网项目的官网介绍的视频文件,最初是直接引入本地路径调试的,由于运维还没有生成在线地址给我们,后来提交代码到仓库中去的时候忘记在 .gitignore文件配置,导致把这个视频文件提到了git历史记录了。话不多说,下面是具体的操作步骤。
步骤如下:
首先,我们需要通过命令找出我们Git提交记录中的大文件。
我们需要删除的视频文件,确定是最大的文件,所以我们只需找出排名前 1 的 pack 记录即可,不过这里我们为了演示取排名前3的,执行以下命令:
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -3
上面的命令执行后出现如下信息:
16779d71545f8b76faf02afffe5544ca87a4aaac blob 1102745 1102346 845968268f450adbce465995f52796f05956f4f1fe79429 blob 2081189 2081811 5111192d0781e7d125599010f4885fa95802a1d7018cd44 blob 278367052 278045657 10601748
最后一条就是最大的一条记录,d0781e7d125599010f4885fa95802a1d7018cd44
是它的 id。
找出该记录对应的文件,执行以下命令:
git rev-list --objects --all | grep d0781e7d125599010f4885fa95802a1d7018cd44
上面的命令执行后出现如下信息:
d0781e7d125599010f4885fa95802a1d7018cd44 app/src/assets/img/FS.mp4
这个文件就是我们不小心提交上去的视频文件,它占了有 200 多 M 的空间。
既然文件找到了,那么得将该文件从历史记录中删除,执行以下命令:
git log --pretty=oneline --branches -- app/src/assets/img/FS.mp4
上面的命令执行后只是从历史记录中移除,还没有完全删除它,我们需要重写所有 commit,将该文件从 Git 历史中完全删除:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch app/src/assets/img/FS.mp4 -- --all
上面的命令执行后,此时历史记录中已经没有该文件了,此时是真正删除了它。
不过我们运行 filter-branch 产生的日志还是会对该文件有引用,所以我们还需要运行以下几条命令,把该文件的引用完全删除:
rm -Rf .git/refs/originalrm -Rf .git/logs/git gcgit prune
现在我们再看 .git 文件的大小明显变小了,少了那个大文件,说明我们之前误提交的大文件已经删除了。
最后一步就是 push 代码了,不过就是需要强制 push:
git push --force
大功告成,以上就是删除 Git 历史记录(已提交)中大文件的步骤。
Git删除历史记录(已提交)中的大文件相关推荐
- git删除相关历史提交记录,相关文件保持当前状态
git删除相关历史提交记录,相关文件保持当前状态 引言 新年新气象,趁着现在新的一年开始项目的事情还不是非常繁忙的时候,多整点下酒菜.这不实战类型的博客记录又开始了!当然实战类型的博客 ...
- 【Git学习】如何删除Git中的大文件
近几天,部署了APP出图自动化测试平台西安Jenkins执行节点,该节点部署应该是能提升APP出图自动化测试的构建效率,但万万没想到,刚部署没多久发现该节点构建频频失败,失败的原因也很直接:GitLa ...
- 如何找到已提交内存越来越大的原因?
最近经常提示内存不足,发现任务管理器中已提交内存变得很大,PageFile也很大. 但任务管理器的详细信息里面查看所有进程的提交内存都不是很大,加起来远远达不到任务管理器性能页签里面的已提交内存. 网 ...
- Git如何从众多提交中保留个别提交
Git如何从众多提交中保留个别提交 合并提交 如果说在众多提交中,已某个提交为基准,只保留上游众多提交中的某个或者某几个,可以使用 cherry-pick命令,具体是: git cherry-pick ...
- Win10内存已提交大小过大的问题调研
Win10最大的内存大小实际是看已提交中的最大值(上图红框),如果这个数值满了,就会导致系统崩溃. 使用过程中经常会出现已提交不合理变大的情况,可能是由于Win10使用过程中会存在很多内存碎片或者系统 ...
- git删除所有历史提交记录,只留下最新的干净代码
git删除所有历史提交记录,只留下最新的干净代码 1.Checkoutgit checkout --orphan latest_branch2. Add all the filesgit add -A ...
- git删除某次提交(某个commit)的方法【转】
本文转载自:https://www.36nu.com/post/275 git删除某次提交(某个commit)的方法 疯狂的兔子 发表于 4个月前 阅读 536 收藏 0 推荐 0 评论 0 推荐收藏 ...
- 使用请求在python中下载大文件
本文翻译自:Download large file in python with requests Requests is a really nice library. 请求是一个非常不错的库. I' ...
- 【Linux】使用du、df 和 sort 命令快速找出Linux系统中的大文件
在性能测试中,我们经常要关注系统磁盘空间,防止因磁盘空间占满而导致的报错,那么具体怎么查看磁盘空间的大小呢?怎么找到占用空间最大的文件呢? 使用df.du并结合sort,可以快速找到系统中的大文件! ...
- 如何快速找出Linux系统中的大文件?
今日主题: 如何快速找出Linux系统中的大文件? 在前面的文章中,我们讲到了压测时磁盘空间被占满的问题,可以跟今天的文章结合着看. 在性能测试中,我们经常要关注系统磁盘空间,防止因磁盘空间占满而导致 ...
最新文章
- Epoch不仅过时,而且有害?Reddit机器学习板块展开讨论
- 细数二十世纪最伟大的10大算法
- sklearn做交叉验证
- Android优化五:布局优化
- Python 中名词
- 史上最详细Docker部署Mysql主从复制,带每一步骤图!!!
- PMP知识点(六、质量管理)
- axios获取图片显示_vue中使用axios post上传头像/图片并实时显示到页面的方法
- (原创) 看电影 源代码 有感——量子力学的玄妙
- 没有数学天赋是一种什么体验?
- flex 底部固定_小猿圈网站页面底部固定的方法
- 高三了,一模距本科线还差22,英语才28,怎么办啊
- linux服务器架设指南笔记
- intellij idea 更换代码颜色(教程)
- 信阳师范学院计算机老师,信阳师范学院计算机与信息技术学院导师教师师资介绍简介-樊建伟...
- 炒股程序化交易接口怎么获取实时行情
- MongoDB的集群安装搭建配置
- 国防科大 linux教程,操作系统国防科大罗宇
- CentOS 7下ngrok服务器搭建
- NVME协议解读(一)