今天遇到一个问题,不知道什么时候git历史记录中多出了一个超过100m的压缩包,这个文件不在本地也不在远端,只存在git历史记录中。
每次提交后推送文件都会失败,显示超过文件大小100m。
在windows执行命令git filter-branch --tree-filter 'rm -f path' -- HEAD 又显示git找不到历史文件,我只能尝试一下git-filter-repo了
用 git filter-repo 彻底删除Git中的大文件
git filter-branch不仅速度慢,还容易出问题,而且官方都在使用git filter-branch时推荐git filter-repo,因此尝试一下官方推荐的方法
一、安装
git-filter-repo 运行环境要求:
git >= 2.22.0 at a minimum; some features require git >= 2.24.0 or later
python3 >= 3.5
git-filter-repo安装:
它本质上是一个python脚本文件,下载地址:https://github.com/newren/git-filter-repo
Linux中把它放在系统路径下即可 /usr/local/bin/git-filter-repo
windows中把git-filter-repo.py文件所在的目录加入系统环境变量
二、使用
执行:python <你的git_filter_repo.py文件路径> --path <删除的文件路径> --invert-paths
Git Filter Repo 默认情况下不允许对非全新克隆的仓库进行破坏性操作,以避免意外丢失或破坏重要的历史记录。如果你确定要强制执行操作,可以使用 --force
参数,但请注意这可能导致丢失部分历史记录或造成其他意外后果。
强制执行:python <你的git_filter_repo.py文件路径> --path <删除的文件路径> --invert-paths --force
Comments | NOTHING