49

在https://github.com/github/gitignore有一组有用的.gitignore文件 。每个忽略文件都有一个扩展名,例如 Java.gitignore、vim.gitignore。当我将这些文件直接放入工作目录时,它们不起作用。.gitignore

是否需要创建单个文件.gitignore并将组成文件合并到其中?

因此,在使用--global .gitignore文件时,配置似乎指向单个文件。例如,如果我想应用.gitignoreGlobal/ 目录中的所有文件,我应该手动将它们合并到一个文件中吗?如果是这样,让这个合并的文件与“官方”集合保持最新是额外的工作。

重申一下,我承认我们可以.gitignore在不同的目录中使用不同的文件,但这不是我想要的。我想.gitignore在一个目录中应用多个文件。

4

1 回答 1

53

澄清一下:一个项目的 gitignore 文件被称为.gitignore


背景:

A.gitignore指的是它所在的目录,它是具有 .git 存储库的目录的顶级或后代,即“.git/”目录。

.gitignore任何子目录中都可以有多个文件,但最佳实践是在给定的项目根目录中拥有一个 .gitignore文件,并根据需要让该文件引用子目录,例如 images/yearly/recent 否则很难知道 "which" 。 gitignore 文件查看以找到被忽略的内容。鉴于您可以使用模式作为文件名,这可能非常棘手!

我还建议避免使用.gitignore适用于您机器上所有项目的全局文件,尽管您可能会保留一个模板以用于新项目。这里的主要考虑因素是您.gitignore将与其他开发人员(可能存在也可能不存在)不同,因此结果未确定。一个例外的例子是.gitignore在我的机器上打开的任何项目中使用我不想要的 IDE 文件的全局文件,因此我使用.gitigore带有 .idea/ 文件 (rubyMine) 条目的全局文件。


您看到列出的模板的意图是通常您正在使用特定语言为给定文件编写代码。鉴于此,基于该语言的模板通常就足够了。

如果代码库中有多种语言,则需要.gitignore为这些语言组合多个 's,这可以通过多种方式完成,例如:

cat .gitignore1 .gitignore2 > .gitignore # if .gitignore doesn't exist yet
cat .gitignore1 >> .gitignore # Add to it if it already exists
paste .gitignore1 .gitignore # Add to it if it already exists

热门(ISH)新闻(2014年夏季):

Gitignorer 是一个简单的实用程序,可帮助创建 .gitignore 文件。它从 github.com/github/gitignore 中提取特定(指定)的 .gitignore 模板,以及要排除的公共文件,将它们混合在一起,并将它们保存到当前目录中的 .gitignore 中。

示例用法:

gitignorer create c java python

Gitignorer 目前在 AUR 中可用,网址为https://aur.archlinux.org/packages/gitignorer/和 GitHub 上的https://github.com/zachlatta/gitignorer


于 2012-04-23T03:26:36.717 回答