Git 存储库中的 Ignore. pyc 文件

如何忽略 git 中的 .pyc文件?

如果我把它放在 .gitignore它不工作。我需要他们取消跟踪,不检查提交。

176793 次浏览

把它放在 .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文件中。

在将 *.pyc放入 .gitignore之前,您可能已经将它们添加到存储库中。
首先从存储库中删除它们。

您应该添加一行:

*.pyc

在存储库初始化后立即将 .gitignore文件转移到 git 存储库树的根文件夹中。

正如 Ralphtheninja所说,如果您事先忘记这样做,如果您只是将这一行添加到 .gitignore文件中,所有以前提交的 .pyc文件仍然会被跟踪,因此您需要将它们从存储库中删除。

如果你使用的是 Linux 系统(或者像 MacOSX 一样的“父母与儿子”) ,你只需要从存储库的根目录执行一行命令就可以快速完成:

find . -name "*.pyc" -exec git rm -f "{}" \;

这意味着:

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

从 git 删除 *.pyc文件作为跟踪文件之后,将此更改提交到存储库,然后您可以最终将 *.pyc行添加到 .gitignore文件。

(改编自 http://yuji.wordpress.com/2010/10/29/git-remove-all-pyc/)

谢谢@Enrico 的回答。

注意,如果您正在使用 viralenv,那么您当前所在的目录中将有多个 .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 "{}" \;

在. gitignore 文件中添加 * . pyc 以保持 git 的清洁是必要的

echo "*.pyc" >> .gitignore

好好享受吧。

如果你想忽略。全局的 pyc’文件(即,如果您不想将该行添加到。Git 目录中的 gitignore 文件) ,请尝试以下操作:

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

[参考文献]
Https://git-scm.com/docs/gitignore

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

  • 前面的“ * *”后跟一个斜杠表示所有目录中的匹配。例如,“ * */foo”匹配任何地方的文件或目录“ foo”,与模式“ foo”相同* */foo/bar”匹配“ foo”目录下的任何文件或目录“ bar”。

如果你已经在回购中承诺,只是

  1. 转到文件夹 /__pycache__,
  2. 删除所有这些文件(不用担心,它们是临时文件并且是重复生成的)
  3. 有一个新的提交,比如‘ update gitignore’
  4. 你完了! .pyc将不再出现。