提问者:小点点

git是否会在将文件添加到. gitignore后从版本控制中删除文件?


我不小心在我所有的git提交和推送活动中包含了我Python的虚拟环境目录venv

我刚刚将venv添加到我的. gitignore。但是我的.git文件夹仍然很大(我假设是因为之前的提交和对venv的跟踪)。

我怎样才能让git完全忘记跟踪venv并将我的. git文件夹再次缩小到合理的大小,因为它让Heroku推动了一场噩梦。


共3个答案

匿名用户

尝试从git存储库中删除文件:

git rm --cached venv*

Rich Stone在下面提到,如果venv是一个文件夹,你应该使用递归开关,-r

git rm --cached -r venv*

匿名用户

试试git gc,根据手册,这会触发自动垃圾回收机制。如果这没有帮助,请在这里留下评论,我会为您调查更多选项。

匿名用户

不,它没有。. gitignore只确保被忽略的文件不会意外添加,但它不会从历史记录中删除它们,也不会从HEAD中删除它们,如果它们已经添加,甚至不会从索引中删除它们。

从git历史中永久删除大文件需要重写历史记录,这是一个有点痛苦的操作。特别是,它会中断从其他具有“旧”历史版本的存储库中的推送和拉取。但这是可以做到的;有关详细信息,请参阅例如这个问题或这个问题。