忽略git仓库中的.pyc文件
我怎么能忽略文件.pyc在混帐。 如果我把.gitignore不工作:我需要他们是不追踪,不检查它的提交。
把它放在.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
条目的完整path,要么将其放在一个.gitignore
文件中的任何一个从根目录(包含)开始的目录中。
你应该添加一行:
*.pyc
到版本库初始化后,git存储库树的根文件夹中的.gitignore
文件。
正如ralphtheninja所说,如果你之前忘了这么做的话,如果你只是把这行添加到.gitignore
文件中,所有以前提交的.pyc
文件都将被跟踪,所以你需要将它们从版本库中删除。
如果你在一个Linux系统上(或者像MacOSX那样的“父母与子女”),你可以使用这个只需要从存储库根目录执行的命令来快速完成它:
find . -name "*.pyc" -exec git rm -f "{}" \;
这只是意味着:
从我目前所在的目录开始,find名称以扩展名
.pyc
结尾的所有文件,并将文件名传递给命令git rm -f
将*.pyc
文件从git中作为被跟踪文件删除后,将这个改变提交到版本库,然后你可以最后把*.pyc
行添加到.gitignore
文件中。
(改编自http://yuji.wordpress.com/2010/10/29/git-remove-all-pyc/ )
在将*.pyc
放入.gitignore
之前,您可能已将它们添加到存储库中。
首先将其从存储库中删除。
感谢@Enrico的答案。
请注意,如果您使用的是virtualenv,您将在当前目录中的多个.pyc
文件中被find命令捕获。
例如:
./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
文件。