git-filter-repo操作 Git 历史记录–移除文件

发布于 2023-11-28  2 次阅读


今天遇到一个问题,不知道什么时候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


People who care about each other will meet again.