使用多个.gitignore文件的最佳实践

54
存在一系列有用的 .gitignore 文件,位于 https://github.com/github/gitignore。那里的每个忽略文件都有一个扩展名为 .gitignore,例如 Java.gitignore、vim.gitignore。当我直接将这些文件放入工作目录时,它们没有起作用。
需要创建一个单独的 .gitignore 文件并将组成部分文件合并到其中吗?
因此,在使用 --global .gitignore 文件时,似乎配置指向单个文件。例如,如果我想要应用 Global/ 目录中的所有 .gitignore 文件,我是否应该手动将它们合并为单个文件?如果是这样,就需要额外的工作来使这个合并的文件与“官方”集合保持最新。
再次强调,我知道我们可以在不同的目录中使用不同的 .gitignore 文件,但这不是我想要的。我想在一个单独的目录中应用多个 .gitignore 文件。
1个回答

58
为了澄清:项目的gitignore文件被称为.gitignore
背景: .gitignore是指它所在的目录,该目录是一个带有.git存储库的顶级或子目录,即".git/"目录。
任何子目录中都可以有多个.gitignore文件,但最佳实践是在给定项目的根目录中只有一个.gitignore文件,并使该文件引用必要的子目录,例如images/yearly/recent。否则,很难知道要查找哪个.gitignore文件以查找正在被忽略的内容。考虑到您可以使用文件名作为模式,这可能非常棘手!
我还建议避免使用适用于计算机上所有项目的全局.gitignore文件,尽管您可能会保留一个模板供新项目使用。主要的考虑因素是您的.gitignore与其他开发人员(可能存在也可能不存在)不同,因此结果是不确定的。这种情况的一个例外是使用全局.gitignore文件来处理我不想在计算机上打开的任何项目中的IDE文件,因此我使用具有.idea/文件(rubyMine)条目的全局.gitigore
这些模板的意图是通常您正在使用特定语言编写给定文件的代码。鉴于此,基于该语言的模板通常已经足够。
如果代码库中有多种语言,则需要组合多个用于这些语言的.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

最新消息(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



15
基本上,是的,你必须手动复制粘贴到一个文件中。(除非我误解了这个答案)。 - Alexander Bird
2
同意,但我觉得有必要明确一些术语。我们在谈论的是全局(跨存储库).gitignore和项目根目录.gitignore之间的区别(适用于一个仓库中的所有文件)。对我来说,项目根目录的方法效果最好,需要时可以将条目从一个项目复制到另一个项目。全局.gitignore似乎有很大潜力引起混淆。 - moodboom
添加了一些更多的信息以帮助清晰度。 - Michael Durrant
在避免全局变量方面添加了更多信息,但对于IDE文件可以考虑使用。 - Michael Durrant
1
与此相关:https://dev59.com/1HA75IYBdhLWcg3wboUz#3307252,更倾向于使用多个.gitignore文件。 - developer.g
你可以使用https://www.toptal.com/developers/gitignore,它可以根据一些标准(例如:intellij java maven)创建一个大的gitignore文件。 https://www.toptal.com/developers/gitignore/api/intellij,java,maven - Jan

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