How can I remove all __pycache__
subdirectories in my repository using .gitignore
?
CodePudding user response:
Add this in .gitignore, also in future you can use this handy generator
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
CodePudding user response:
You cannot remove files from existing commits: those commits are frozen for all time. You can make sure you do not add new files to future commits, though. Simply remove the files now, with git rm -r --cached __pycache__
, and list __pycache__
or __pycache__/
in your .gitignore
(creating this .gitignore
file if needed). Do this for each __pycache__
directory; use your OS's facilities to find these (e.g., find . -name __pycache__ -type d
). Then git add .gitignore
and git commit
to commit the removal.
Note that any time anyone moves from any commit that has the files—where they'll be checked out—to a commit that lacks the files, they will have their entire __pycache__
directory removed if Git is able to do that; at the least, any cached files that were committed and can be removed will be removed. So the --cached
in the git rm -r --cached
above only speeds things up for you by avoiding the removal of the cached compiled files this time. Others will have to rebuild their cache.
To make a new and different repository in which the __pycache__
files were ever accidentally committed in the first place, use git filter-branch
(which is now deprecated) or the newfangled git filter-repo
(which is not yet distributed with Git). Or, see any of these various existing questions and their answers, which you should already have found before you asked this: