使用多个.gitignore文件的最佳做法

时间:2012-04-23 03:21:20

标签: git github gitignore

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

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

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

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

1 个答案:

答案 0 :(得分:33)

澄清:项目gitignore文件名为.gitignore


背景:

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

任何子目录中都可以有多个.gitignore文件,但最佳实践是在给定的项目根目录中包含一个 .gitignore并且具有该文件引用子目录必要时,例如images / annual / recent否则,要知道“哪个”.gitignore文件要查找被忽略的内容是很棘手的。鉴于你可以使用模式作为文件名,这可能非常棘手!

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


您看到的模板的目的是通常用特定语言编写给定文件的代码。鉴于此,基于该语言的模板通常就足够了。

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

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

Hot(ish)关闭媒体(2014年夏季):

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

使用示例:

gitignorer create c java python

Gitignorer目前在https://aur.archlinux.org/packages/gitignorer/的AUR和https://github.com/zachlatta/gitignorer的GitHub上提供