这是我的.gitignore
:
*__pycache__*
*.pyc
db.sqlite3
*.DS_Store
media/
res/
我可以在我的 Atom 上看到__pycache__
目录是VcsIgnored的(这意味着该目录不受 git 的版本控制)
但是,无论如何,当我对文件进行更改时,会在我的 Atom git窗口中获得多个__pycache__
文件,这些文件已被修改和取消登台:
我不知道问题出在 git 还是 Atom 中。
答案 0 :(得分:2)
尝试git rm --cached */__pycache__/*
.gitignore
文件仅通知git不应跟踪哪些新文件。不要从已经跟踪的存储库文件中删除。
答案 1 :(得分:0)
已更新,可解决评论中的后续问题
.gitignore仅 适用于未跟踪的文件。
如果路径显示为“已修改”或“未暂存”,则意味着文件已被跟踪-它们已在索引中,并且可能在之前的提交中,您已将它们放入gitignore,或者在将它们放入后被强制添加在gitignore中。
因此,您试图忽略对跟踪文件的修改,而这不是您可以在git中完成的事情。
(为清楚起见,您可能会找到答案,说您可以在索引上使用各种标志来忽略对暂存文件的更改。这几乎总是会带来麻烦,因为这不是这些标志的作用。)
那么如何使这些文件被忽略?您必须告诉git停止跟踪它们。这很容易做到,但是有潜在的麻烦副作用。
假设您没有很多长期存在的分支,简单的方法是git rm --cached
撤消更改,然后创建新的提交。例如,如果您只担心清理master分支,则可以
git checkout master
git rm -r --cached __pycache__ # or whatever other paths
git commit -m "remove unwanted files'
现在,您应该发现git status
默认不显示这些文件,并且git add
没有添加它们。但是,如果您执行更改文件的操作,然后
git checout HEAD^
返回到包含这些文件的提交,git会悄悄地掩盖您对这些文件所做的更改,即使它没有要还原的更改的副本。而当你随后
git checkout master
它们将从工作树中完全删除。
对于*.pyc
文件来说,这也许是可以接受的(因为Python仍然会快速/安静地重新生成它们);对于其他文件则可能不是,所以这最好是一种“谨慎使用”的方法。
一种替代方法-可以避免上述问题,但要自付费用-重写历史记录,使其看起来像从未提交过被忽略的文件。
请注意,与任何历史记录重写一样,您必须与共享该存储库的其他任何人进行协调
如果您决定采用此方法,则存在记录该过程的现有问题/答案;您会使用树过滤器或索引过滤器寻找git-filter-branch。