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

vic*_*woo 38 git github gitignore

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

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

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

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

Mic*_*ant 36

澄清:调用项目gitignore文件 .gitignore


背景:

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

可以有多个.gitignore文件,在任何子目录,但最好的做法是有一个 .gitignore在给定的项目根,并有文件引用子目录必要的,例如图像/年/最近否则是会非常棘手知道"其中". gitignore文件,以查找被忽略的内容.鉴于您可以使用模式作为文件名,这可能相当棘手!

我还建议避免使用.gitignore适用于您计算机上所有项目的全局文件,尽管您可以保留一个模板以用于新项目.这里的主要考虑因素是您.gitignore将与其他开发人员(可能存在或可能不存在)不同,因此结果未确定.一个例外的例子是.gitignore在我的机器上打开的任何项目中使用我不想要的IDE文件的全局文件,所以我使用.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
Run Code Online (Sandbox Code Playgroud)

Hot(ish)关闭新闻(2014年夏季):

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

用法示例:

gitignorer create c java python
Run Code Online (Sandbox Code Playgroud)

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


  • 基本上......是的,你必须手动复制/粘贴到一个文件中.(除非我误解了这个答案). (12认同)
  • 同意,但我觉得有必要指定一些术语.我们正在谈论GLOBAL(跨存储库).gitignore和项目根.gitignore(适用于ONE repo中的所有文件)之间的区别.项目根方法对我来说也是最好的,根据需要将条目从一个项目复制到另一个项目.一个全球性的.gitignore似乎有很大的潜力引起混乱. (2认同)