正在从 git 存储库中删除 __pycache__

Removing __pycache__ from git repository

如何使用 .gitignore 删除存储库中的所有 __pycache__ 子目录?

在 .gitignore 中添加这个,以后你也可以方便地使用它 generator

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

您无法从现有提交中删除文件:这些提交已被永久冻结。不过,您可以确保不 添加新的 文件到 future 提交。现在只需删除文件,使用 git rm -r --cached __pycache__,并在 .gitignore 中列出 __pycache____pycache__/(如果需要,创建此 .gitignore 文件)。对每个 __pycache__ 目录执行此操作;使用 OS 的设施来查找这些(例如 find . -name __pycache__ -type d)。然后 git add .gitignoregit commit 提交删除。

请注意,任何时候任何人从 文件的任何提交移动到 缺少 [=47] 文件的提交=] 文件,如果 Git 能够做到这一点,他们将删除整个 __pycache__ 目录;至少,任何已提交且可以删除的缓存文件都将被删除。因此,上面 git rm -r --cached 中的 --cached 只会通过避免删除缓存的编译文件 这次 [=47] 来为 you 加快速度=].其他人将不得不重建他们的缓存。

要创建一个新的不同的存储库,其中 __pycache__ 文件曾经被意外提交,请使用 git filter-branch(现在已弃用)或新奇的 git filter-repo(尚未与 Git 一起分发)。或者,查看这些各种现有问题及其答案中的任何一个,您在提出此问题之前应该已经找到了:

  • Remove a file from a Git repository without deleting it from the local filesystem
  • Applying .gitignore to committed files
  • How can I make Git "forget" about a file that was tracked, but is now in .gitignore?
  • Remove sensitive files and their commits from Git history