IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git彻底删除历史记录中大文件 -> 正文阅读

[开发工具]Git彻底删除历史记录中大文件

在使用Git时偶尔会有小伙伴提交一些错误的大文件到版本控制,等到发现用git rm
删除掉那个文件。但这样做是不够的,这些文件之后并没有真正在项目中被用到,与此同时这些大文件的存在会导致整个 git 仓库的容量暴增,影响每次 clone 和 fork 代码仓库的时间。文件还一直存在历史log中,需要重写历史后执行清理后才能彻底清除。

  1. git verify-pack 命令查看 pack 文件包的相关详细信息,通过文件大小进行排序,这里只列出5个最大的文件。
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5

output

988821841808f2a04123b4a16c88912bb04e3cfa blob   31157 14012 747972
2c958c8b8521738c76269812c280b20a08b7b0fc blob   31170 8443 306412
9108ebc4238d195101622febd15ecafc93ccc18e blob   31714 14196 728479
2d842e61422a013354e7865f946dad1058bce5a1 blob   32110 14395 575722
777e8697e5dc1017ca901c8cf226d707b6e96b06 blob   62678 22645 248106
  1. git rev-list 列出该对象文件名等更多信息
git rev-list --objects --all | grep 777e8697e5dc1017ca901c8cf226d707b6e96b06

output

777e8697e5dc1017ca901c8cf226d707b6e96b06 go.sum

以上两步可以全并成一条命令,方便快速查询。

git rev-list --objects --all |grep $(git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -1|awk '{print $1}')

在日志中查找这个文件

git log --pretty=oneline --branches -- go.sum

filter-branch 修改提交历史的命令

–tree-filter表示修改文件列表。
–msg-filter表示修改提交信息,原提交信息从标准输入读入,新提交信息输出到标准输出。
–prune-empty表示如果修改后的提交为空则扔掉不要。在一次试运行中我发现虽然文件被删除了,但是还剩下个空的提交,就查了下 man 文档,找到了这个选项。
-f是忽略备份。不加这个选项第二次运行这个命令时会出错,意思是 git 上次做了备份,现在再要运行的话得处理掉上次的备份。
–all是针对所有的分支。

git filter-branch --index-filter 'git rm --cached --ignore-unmatch go.sum -- --all

到这里,历史记录中已经没有该文件了。不过运行 filter-branch 产生的日志还是会对该文件有引用,所以还需要运行以下几条命令,把该文件的引用完全删除:

rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
git prune

查看.git目录,已经小了很多了

du -sh .git

强制 push

git push --force

需要注意把涉及重写后的分支全部强制推送到远程共享库。同步提醒其他小伙伴重新clone 代码仓库,否则其他人提交就前功尽弃了。

云效代码仓库删除大文件
官网git-filter-branch

filter-branch 常用功能
修改提交用户名

git filter-branch -f --env-filter "GIT_AUTHOR_NAME=xxx" -- --all

修改提交邮箱

git filter-branch -f --env-filter "GIT_AUTHOR_EMAIL=xxx@xxx.com" -- --all
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:55:18  更:2022-10-17 12:57:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:39:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码