我不小心将我的 Python 虚拟环境目录包含venv在我的所有 git 提交和推送活动中。
我刚刚添加venv到我的.gitignore. 但是我的 .git 文件夹仍然很大(我假设是因为以前的提交和对 venv 的跟踪)。
我怎样才能让 git 完全忘记跟踪venv并将我的.git文件夹再次缩小到合理的大小,因为这让 Heroku 成为了一场噩梦。
我不小心将我的 Python 虚拟环境目录包含venv在我的所有 git 提交和推送活动中。
我刚刚添加venv到我的.gitignore. 但是我的 .git 文件夹仍然很大(我假设是因为以前的提交和对 venv 的跟踪)。
我怎样才能让 git 完全忘记跟踪venv并将我的.git文件夹再次缩小到合理的大小,因为这让 Heroku 成为了一场噩梦。
尝试从您的 git 存储库中删除文件:
git rm --cached venv*
Rich Stone 在下面提到,如果venv是文件夹,则应使用递归开关,-r:
git rm --cached -r venv*
试试看git gc,根据手册,这会触发自动垃圾收集。如果这没有帮助,请在此处发表评论,我会为您调查更多选项。
请参阅此线程:如何使 Git “忘记”已跟踪但现在位于 .gitignore 中的文件?
从当前提交中删除文件很容易,但是从历史记录中完全删除它们以减小文件大小是一团糟,请参阅如何从 Git 存储库中的提交历史记录中删除/删除大文件?或https://help.github.com/articles/remove-sensitive-data
将您的最新代码导出到新的 git 存储库并重新开始并保留旧代码存档可能会更快。
放入文件.gitignore不会从存储库中删除文件。
您需要使用git filter-brach从存储库中完全删除文件或目录。为此,请使用以下命令:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch file/or/dir/with/complete/path' --prune-empty --all
这样,您将更改存储库历史记录以完成file/or/dir/with/complete/path从所有提交中删除。请记住,您将需要执行 a git push -f,因为您更改了历史记录。