GIT彻底删除文件以及历史记录


git不小心将一些其他文件加入了版本管理,可能是大文件,也可能是敏感数据文件。

从分支中删除了文件后提交,依然能过够从历史记录中恢复并查看这个文件,

如果是大文件,那么当其他用户pull的时候,会很耗时,

.git目录是很大的

查看版本库历史:

这时候,需要彻底的删除这个大文件

具体操作如下:

第一步,执行命令:

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch GZBlog/wwwroot/lib/tinymce/plugins/insertCode/images/SQLToolbelt*.exe' --prune-empty --tag-name-filter cat -- --all
GarsonZhang www.infnitee.com
 删除文件夹

如果删除的是文件夹,那么需要在 git rm --cached 命令后面添加  -r 命令,表示递归删除(子)文件夹和文件夹下的文件

PowerShell 全选
git filter-branch --force --index-filter 'git rm --cached -r --ignore-unmatch GZBlog/wwwroot/lib/tinymce/plugins/insertCode/images' --prune-empty --tag-name-filter cat -- --all

注意:这里如果路径直接写文件名SQLToolbelt(1).exe,会报错:

查询资料判断为(是关键字,关键字要用\转义

然而路径是支持通配符的,所以这里就直接用了sqltoolbelt*.exe,反正目录中满足这个通配符的就那么一个文件

执行结果如果出现这种情况(*** is unchanged):

代表路径不正确,没有找到文件

正确的执行结果应该是(*** was rewritten):

第二步:以强制覆盖的方式推送你的repo, 命令如下:

$ git push origin master --force --tags
GarsonZhang www.infnitee.com

执行结果:

第三步:清理和回收空间

依次执行命令:

$ git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
$ git reflog expire --expire=now --all
$ git gc --prune=now
GarsonZhang www.infnitee.com

结果:

 

执行过后,再看.git目录大小:恢复正常大小

 

完成后,其他用户在pull仓库的时候,就不会在耗时的去下载大文件到.git文件夹了

 

参考:https://www.cnblogs.com/tielemao/p/9973477.html

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
YES开发框架
上一篇:Web应用程序dll获取当前程序集路径问题
下一篇:网易闪电邮客户端中配置企业邮箱的方法
评论列表

发表评论

评论内容
昵称:
关联文章

GIT彻底删除文件以及历史记录
git删除全部提交历史,成为一个新的仓库
git 放弃本地修改
git 合并多次提交
GIT Bash 简单讲解-git如何推/拉代码
git rebase 找回丢失的代码
C#错误异常日志记录文件
版本记录
winform应用退出不彻底的解决办法
无法处理文件 **.resx,因为它位于 Internet 或受限区域中,或者文件上具有 Web 标记。要想处理这些文件,请删除 Web 标记。
关于PaddleSharp GPU使用 常见问题记录
git仓库子模块(submodule)项目中的实战应用
Linux删除用户
Visual Studio(VS) 集成 Git 的命令窗口 Git Bash
SQLite数据库删除数据后数据库文件大小不变
vue-cli4构建build时删除console和debugger
使用.NET 6开发TodoList应用(10)——实现DELETE请求以及HTTP请求幂等性
雲瑞文件直链分享软件
DevExpress 组件 历史各版本下载地址【更新:V21.1.5】
Navicat延长试用,删除注册表无限试用

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码