彻底删除git中的较大文件(包括历史提交记录)

场景
适用于从一个git项目中,将体积较大的资源彻底从git中删除,包括历史提交记录。

如果仅仅在目录中删除一个文件是不够的,只要在提交记录中有这个文件,那么 .git 中就会有这个文件的信息。

用 filter-branch 可以强制修改提交信息,将某个文件的历史提交痕迹也抹去,就像从来没有过这个文件一样。

做法
0、确保本地仓库是最新版本。

1、在项目根目录下运行

git rev-list --all | xargs -rL1 git ls-tree -r --long | sort -uk3 | sort -rnk4 | head -10

列出所有仓库中的对象(包括SHA值、大小、路径等),并按照大小降序排列,列出TOP 10。

2、根据最大文件的路径 {filepath},修改此文件的commit历史:

git filter-branch --tree-filter "rm -f {filepath}" -- --all

3、强制提交到远程分支:

git push -f --all

4、完成。可以重新下载项目,列出所有仓库中的对象,看是否还存在刚刚删除的文件。
————————————————
版权声明:本文为CSDN博主「HappyRocking」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/HappyRocking/article/details/89313501

posted @   不是豆豆  阅读(866)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2019-07-08 MySQL 的一些批处理
2013-07-08 NPOI之Excel——自动筛选、数字格式
友情链接:迷途


点击右上角即可分享
微信分享提示