尝试使用git rm --cached */__pycache__/*
.gitignore
文件仅告诉Git哪些新文件不应被跟踪。不要从仓库中删除已被跟踪的文件。
更新以回答评论中的后续问题
.gitignore
文件仅适用于未被跟踪的文件。
如果路径显示为“修改”或“未暂存”,那么这些文件已经被跟踪 - 它们在索引中,可能在之前的提交中,然后再将它们放入.gitignore;或者它们是在将其放入.gitignore后强制添加的。
因此,您正在尝试忽略对已跟踪文件的修改,而这不是您可以在git中做到的事情。
(明确一下,您可能会找到答案,说您可以在索引上使用各种标志来忽略对暂存文件的更改。但这几乎总是会导致麻烦,因为这不是这些标志的用途。)
那么如何使这些文件被忽略? 您必须告诉git停止跟踪它们。 这很容易做到,但可能会产生潜在的麻烦副作用。
假设您没有很多长期存在的分支,简单的方法是使用git rm --cached
取消暂存更改,然后创建一个新的提交。例如,如果您只关心清理主分支,您可以这样做:
git checkout master
git rm -r --cached __pycache__ # or whatever other paths
git commit -m "remove unwanted files'
现在你应该发现,默认情况下git status
不会显示这些文件,git add
也不会添加它们。但是,如果您做了一些更改后:
git checkout HEAD^
...
git checkout master
它们将从工作树中完全删除。
对于*.pyc
文件,这可能是可以接受的(因为Python会快速/安静地重新生成它们),但对于其他文件可能不是,因此最多只能以“谨慎使用”的方式使用此方法。
另一种选择-避免上述问题但带有自己的代价-是重写历史记录,使其看起来就像忽略的文件从未提交过。
请注意,与任何历史记录重写一样,您必须与共享存储库的任何其他人协调。
如果您决定遵循此路径,则存在已有的问题/答案记录过程;您需要寻找具有tree-filter或index-filter的git-filter-branch。
.gitignore
文件:https://dev59.com/D3A65IYBdhLWcg3wogEb - NeilG