如何忽略git中的.pyc
个文件?
如果我把它放在.gitignore
中,它就不起作用了。我需要它们不被跟踪而不检查提交。
答案 0 :(得分:178)
您应该添加一行:
*.pyc
存储库初始化后立即到git存储库树的根文件夹中的.gitignore
文件。
正如 ralphtheninja 所说,如果您事先忘了这么做,如果您只是将行添加到.gitignore
文件中,那么所有以前提交的.pyc
文件仍将是跟踪,因此您需要将它们从存储库中删除。
如果您使用的是Linux系统(或像MacOSX这样的“父母和儿子”),您可以使用您需要从存储库的根目录执行的这一行命令快速完成此操作:
find . -name "*.pyc" -exec git rm -f "{}" \;
这只是意味着:
从我当前所在的目录开始,查找所有文件 名称以扩展名
.pyc
结尾,并将文件名传递给命令git rm -f
从git中删除*.pyc
个文件作为跟踪文件后,将此更改提交到存储库,然后最后将*.pyc
行添加到.gitignore
文件中。
(改编自http://yuji.wordpress.com/2010/10/29/git-remove-all-pyc/)
答案 1 :(得分:71)
在将*.pyc
放入.gitignore
之前,您可能已将它们添加到存储库中
首先将它们从存储库中删除。
答案 2 :(得分:33)
将其放入.gitignore
。但是从gitignore(5)
手册页:
· If the pattern does not contain a slash /, git treats it as a shell glob pattern and checks for a match against the pathname relative to the location of the .gitignore file (relative to the toplevel of the work tree if not from a .gitignore file). · Otherwise, git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname. For example, "Documentation/*.html" matches "Documentation/git.html" but not "Documentation/ppc/ppc.html" or "tools/perf/Documentation/perf.html".
因此,要么指定相应*.pyc
条目的完整路径,要么将其放在.gitignore
文件中从存储库根目录(包括)的任何目录中。
答案 3 :(得分:3)
我尝试使用先前文章的句子,并且不递归工作,然后阅读一些帮助并获得以下内容:
find . -name "*.pyc" -exec git rm -f "{}" \;
p.d。必须在.gitignore文件中添加* .pyc以保持git clean
echo "*.pyc" >> .gitignore
享受。
答案 4 :(得分:2)
如果您要全局忽略“ .pyc”文件(即,如果您不想将行添加到每个git目录中的.gitignore文件中),请尝试以下操作:
$ cat ~/.gitconfig
[core]
excludesFile = ~/.gitignore
$ cat ~/.gitignore
**/*.pyc
[参考]
https://git-scm.com/docs/gitignore
用户希望Git在所有情况下都忽略的模式(例如,由用户选择的编辑器生成的备份或临时文件)通常进入用户〜/ .gitconfig中由core.excludesFile指定的文件中。
前导“ **”后跟斜杠表示在所有目录中均匹配。例如,“ ** / foo”与文件“ foo”在任何位置都匹配文件或目录“ foo”。 “ ** / foo / bar”与文件或目录“ bar”匹配,直接位于目录“ foo”下。
答案 5 :(得分:0)
感谢@Enrico的回答。
请注意,如果您正在使用virtualenv,那么您目前所在的目录中将会有多个.pyc
个文件,这些文件将由他的查找命令捕获。
例如:
./app.pyc
./lib/python2.7/_weakrefset.pyc
./lib/python2.7/abc.pyc
./lib/python2.7/codecs.pyc
./lib/python2.7/copy_reg.pyc
./lib/python2.7/site-packages/alembic/__init__.pyc
./lib/python2.7/site-packages/alembic/autogenerate/__init__.pyc
./lib/python2.7/site-packages/alembic/autogenerate/api.pyc
我认为删除所有文件无害,但如果您只想删除主目录中的.pyc
文件,那么只需执行
find "*.pyc" -exec git rm -f "{}" \;
这将从git存储库中删除app.pyc
文件。
答案 6 :(得分:0)
如果你在 repo 中提交过,就
/__pycache__
,.pyc
不会再次出现。