不要在未跟踪文件列表中显示*.pyc文件!(git相关)

62

当执行以下操作时:

>git status
它在“未跟踪的文件”下显示了一个大列表的 .pyc 文件。我不希望显示这些内容,因为它会增加干扰。

换句话说,如何使 git 永久忽略所有项目的 .pyc 文件呢?

编辑

我不是想让其他人也忽略我的文件,我真正的意思是“对于所有项目”,这意味着我不想为每个新项目配置忽略 .pyc 文件。

更新

我应该补充说明我正在 Windows 上工作,我的 git 是 msysgit

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

.gitconfig 是一个文件还是一个文件夹?我在我的主目录 (C:\users\<myusername>\) 中没有找到这样的东西

更新2

感谢大家的回复,

我通过使用以下命令解决了问题:

>git config --global core.excludesfile c:\git\ignore_files.txt

将 *.pyc 文件放入 c:\git\ignore_files.txt 中。

7个回答

88
gitignore所提到的,git有3个忽略文件
  • 应该由版本控制并通过克隆分发到其他存储库(即所有开发人员都想要忽略的文件)的模式应放入.gitignore文件中。

(这样就可以处理所有时间:如果有人克隆您的存储库,它将获取.gitignore文件)

  • 特定于特定存储库但不需要与其他相关存储库共享的模式(例如,存在于存储库内但特定于一个用户工作流程的辅助文件)应放入$GIT_DIR/info/exclude文件中。

(在您的情况下不太有趣)

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

(照顾所有项目,但不是所有时间,因为当有人克隆您的存储库时,它不会被复制。)

“所有时间的所有项目”意味着例如创建新git项目的自定义shell,其中自定义.gitignore作为第一个文件的一部分添加到第一个提交中……


+1:综合回答。除此之外,您还应该提到 core.excludesfile 可以作为每个项目的设置而不仅仅是全局设置。 - jfs

57

将文件~/.gitignore放入其中:

*.pyc

运行:

git config --global core.excludesfile ~/.gitignore

我同意@David Wolever的看法,如果可能的话,应该谨慎使用这个选项。

~/.gitignore(在Windows上为"%HOME%\.gitignore")只是惯例,您可以使用任何您喜欢的文件名,例如"c:\docs\gitignore.txt"


为什么这个应该谨慎使用? - LazerSharks
@Gnuey:这是一个全局设置,适用于您的所有git存储库。仅在您希望始终忽略某些文件并对所有项目生效时使用它。 - jfs
@9000: “isn't working for me” 这个描述不够具体。你运行了哪些命令?你尝试过哪些其他解决方案?它们中的任何一个对你有用吗?你期望发生什么?实际上发生了什么?你的操作系统和 git 版本是什么?如果当前的答案都无法解决你的问题,那么请在 Stack Overflow 上提出一个单独的问题。 - jfs
@J.F.Sebastian 我编辑了 ~/.gitignore 文件,添加了一行内容,然后运行了你列出的命令。为了保险起见,我也在我的 git 仓库的 .gitignore 文件中做了同样的操作。然后我运行了 git status 命令,但是仍然看到了很多未跟踪、未被忽略的 PYC 文件。问题是,我可以成功地忽略其他文件类型,但是这些 PYC 文件却无法被忽略。如果有关系的话,这些 PYC 文件是由 PyCharm 生成的。我使用的是 git 版本 2.3.2 (Apple Git-55)。非常抱歉我之前发表的不良评论;我真的很沮丧,因为 PYC 文件堵塞了我的 git 仓库,而我又无法忽略它们。 - sudo
我本意是说“未暂存”,而不是“未跟踪”。无论如何,我进行了一些测试...结果发现,一旦文件已经被添加到git的跟踪文件并至少提交了一次,就无法忽略它们。我的PYC文件之前已经被提交过了,所以现在为时已晚。我不知道这一点。值得注意。 - sudo
@9000: gitignore仅适用于未跟踪的文件。否则它没有任何效果。请参阅文档中的NOTES部分。 - jfs

38
git config --global core.excludesfile "c:\program files\whatever\global_ignore.txt"
然后,添加。
*.foo

到那个文件。


1
糟糕了。使用“git config --global core.excludesfile…”在Git的全局配置中设置它。这对所有项目都应该有效。 - Bombe

7
另一种忽略某些文件模式的方法是:将 *.pyc 添加到 .git/info/excludes 中,这是一种更清洁的方式。

6

添加

*.pyc

在.gitignore文件中添加以下内容,并运行此命令:
git config --global core.excludesfile .gitignore

这对我很有用。


2
如果我没记错的话,有一种方法可以设置全局的.gitignore...但问题在于你不能与其他人共享它(也就是说,其他人拉取你的代码会看到.pyc文件)。
所以,在我看来,最好的做法是为每个项目添加.gitignore。我会为此保留一个通用的.gitignore。 或者你可以切换到bzr,它带有一个明智的默认忽略列表 ^_^

“bzr” 是用 Python 编写的。如果它不能很好地处理 Python 特定的东西,那将是出乎意料的。 - jfs
1
那是真的。我不知道默认设置的完整范围,但我知道它们也处理像 Vim/Emacs 的交换/备份文件、.o 文件等东西。 - David Wolever
有人会认为在Mac上,bzr忽略.DS_Store文件是明智的选择,但它并没有这样做,而svn则可以,我记得。我认为它只默认忽略pyc文件,因为它是用Python编写的,可能也适用于Emacs :) - Vasil
为什么bzr的实现语言会决定它忽略哪些文件?按照这个逻辑,Git默认应该忽略*.o文件。 - mipadi

0

你不能添加吗?

*.pyc

to your .gitignore?


1
.gitignore 文件对于 Git 仓库并非“一劳永逸、万无一失”的解决方案。 - jfs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接