如何在项目中忽略相同名称的文件夹 __pycache__?

75

在使用git更新时,__pycache__目录会很烦人。每当我使用git status命令时,会显示许多.pyc文件。我该如何方便地将__pycache__文件夹列入我的.gitignore文件中,以便在使用git status时它们不会出现?

例如:

core/__pycache__/utils.cpython-36.pyc
core/__pycache__/version.cpython-36.pyc
core/actions/__pycache__/__init__.cpython-36.pyc
core/actions/__pycache__/action.cpython-36.pyc

我需要将所有单独的__pycache__文件列入到.gitignore文件中吗?


1
可能是忽略Git项目中的任何“bin”目录的重复问题。 - melpomene
听起来您已经在一些现有的提交中已经提交*,pyc文件。这些现有的提交永远无法更改——那些pycache文件将永久存在其中。您可以创建新的提交,这些提交就像旧的提交一样,但不包含其中的*.pyc文件,并切换到使用新的提交,永远不再使用旧的提交,只要项目中的其他人也进行切换,这是可行的。 - torek
5个回答

76

使用 **/__pycache__/ 可以忽略整个代码库中的所有 pycache 文件夹。


1
这适用于 tree --gitignore,而仅使用 __pycache__/ 只会忽略顶层目录。 - Paul Evans

39

__pycache__/。结尾的斜杠表示它是一个目录,将忽略其下面的任何文件。


7
不需要 **,直接说 __pycache__/ 就可以了。 - melpomene
7
我在.gitignore文件中添加了"pycache",然后运行了"git status",但是它仍然显示所有的.pyc文件。这没有起作用。 - marlon
2
@marlon 不需要星号。我猜你应该看一下这个:https://dev59.com/pXM_5IYBdhLWcg3wrFMt - alfunx
3
如果你已经通过 git add ... 添加了 __pycache__ 目录文件,那么运行 git status 命令仍然会显示 __pycache__ 目录文件——即使你的 .gitignore 已经更新。你需要执行重置 (git reset),然后再次运行 git status 命令以查看是否成功更新了 .gitignore。之后,你可以添加你想要提交的文件。 - cjn
@cjn,你绝对应该将其写成答案,每个搜索这个问题的人都会认为添加这行代码就可以修复他们的Git。帮助未来的读者吧! - Shayan
显示剩余3条评论

6

我在我的根目录下使用了这个命令,它对我起作用了。

git rm --cached */__pycache__/*

4
我只写了以下内容:
__pycache__

对我很有用,现在在任何目录中忽略__pycache__中的所有文件。

不要忘记删除所有后来缓存的__pycache__文件。


2

对于Windows用户,请检查您的.gitignore文件是否使用\n或\r\n作为行尾符(EOL),我的.gitignore文件中有\r,导致在Windows版本(git版本2.34.1.windows.1)中完全忽略了文件规则,此时__pycache__/也被忽略了。 将EOL更改为\n后,所有__pycache__文件夹都按预期被忽略。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接