从存储库中删除后,从所有以前的提交中删除 virtualenv 文件

Remove virtualenv files from all previous commits after removing from repository

当我开始处理我的 Python 项目之一时,我忘记将我的 venv 虚拟环境目录添加到我的 .gitignore 中。现在,我的 GitHub 存储库显示了该提交的添加和删除,并没有让我很好地了解我何时进行了重大更改(venv 目录有 100,000 多行代码)。

我已经 updated my .gitignore 文件和 运行 git rm --cached . 后跟 git addcommitpush

是否有任何方法可以删除我的 venv 目录更改的所有先前提交的添加和删除,以便 GitHub 将不再在我的提交中计算这些 additions/deletions?我想保留不包含 venv 的提交部分,只删除提交的 venv 部分。

git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch venv"

请记住这会重写分支的整个历史记录,因此您必须强制推送分支并通知所有用户以便他们强制拉取它。