Python 忽略git存储库中的.pyc文件

Python 忽略git存储库中的.pyc文件,python,git,Python,Git,如何忽略git中的.pyc文件 如果我把它放在.gitignore中,它就不工作了。我需要对它们进行未跟踪,并且不检查是否有提交。将其放入.gitignore。但是从gitignore(5)手册页: 因此,请指定相应的*.pyc条目的完整路径,或者将其放入从存储库根目录(包括)开始的任何目录中的.gitignore文件中。在将*.pyc放入.gitignore 首先从存储库中删除它们。您应该添加一行,其中包含: *.pyc 在存储库初始化之后立即转到git存储库树根文件夹中的.gitigno

如何忽略git中的
.pyc
文件


如果我把它放在
.gitignore
中,它就不工作了。我需要对它们进行未跟踪,并且不检查是否有提交。

将其放入
.gitignore
。但是从
gitignore(5)
手册页:


因此,请指定相应的
*.pyc
条目的完整路径,或者将其放入从存储库根目录(包括)开始的任何目录中的
.gitignore
文件中。

在将
*.pyc
放入
.gitignore


首先从存储库中删除它们。

您应该添加一行,其中包含:

*.pyc 
在存储库初始化之后立即转到git存储库树根文件夹中的
.gitignore
文件

正如Ralphteninja所说,如果您忘记事先执行此操作,如果您只是将该行添加到
.gitignore
文件中,所有以前提交的
.pyc
文件仍将被跟踪,因此您需要将其从存储库中删除

如果您使用的是Linux系统(或MacOSX之类的“父子系统”),则只需从存储库的根目录执行以下一行命令即可快速完成:

find . -name "*.pyc" -exec git rm -f "{}" \;
这仅仅意味着:

从我当前所在的目录开始,查找 名称以扩展名
.pyc
结尾,并将文件名传递给命令
git rm-f

从git中将
*.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
文件。

我尝试使用前一篇文章中的句子,但不重复使用,然后阅读一些帮助并获取以下内容:

find . -name "*.pyc" -exec git rm -f "{}" \;
p、 需要在.gitignore文件中添加*.pyc以保持git干净

echo "*.pyc" >> .gitignore

享受。

如果要全局忽略“.pyc”文件(即,如果不想将该行添加到每个git目录中的.gitignore文件),请尝试以下操作:

$ cat ~/.gitconfig 
[core]
    excludesFile = ~/.gitignore
$ cat ~/.gitignore
**/*.pyc
[参考]

  • 用户希望Git在所有情况下忽略的模式(例如,由用户选择的编辑器生成的备份或临时文件)通常会进入用户~/.gitconfig中core.excludesFile指定的文件中

  • 前导“**”后跟斜杠表示在所有目录中都匹配。例如,“**/foo”匹配文件或目录“foo”,与模式“foo”相同。“**/foo/bar”与目录“foo”下的任何位置的文件或目录“bar”匹配


.gitignore应该可以工作。你能提供一份你已经输入的行的副本吗?试图解决这个问题吗?为了避免其他人感到困惑,Ignacio对手册页的解释是错误的。你不需要把*.pyc放在同一个目录中,只要把它放在父目录(或祖父母目录等)中就足够了。@Godsmith:更正。谢谢Godsmit,所以你说我的
main.py
是根目录,我可以在那里放一个
.gitignore
?内部是
*.pyc
,它将忽略任何地方的所有
.pyc
文件,即使它位于更多目录中?或者,只需从git和本地计算机中删除文件,您可以从顶级目录执行
git rm--cached*.pyc
。从我这里得到它,但一旦你提交了.pyc文件,它就会被git跟踪,你应该先删除它们,然后提交,以防你在存储库中有它们
$ cat ~/.gitconfig 
[core]
    excludesFile = ~/.gitignore
$ cat ~/.gitignore
**/*.pyc