git 忽略特定类型的所有文件,特定子文件夹中的文件除外

Posted

技术标签:

【中文标题】git 忽略特定类型的所有文件,特定子文件夹中的文件除外【英文标题】:git ignore all files of a certain type, except those in a specific subfolder 【发布时间】:2011-06-04 23:57:55 【问题描述】:

我有一个这样的目录结构:

根 文件夹 1 abc.json def.json 一些迪尔 更多.json 文件夹2 qwe.json rty.json 规格 mock1.json mock2.json 一些迪尔 more_mocks.json

现在使用.gitignore 我想忽略所有*.json 文件,spec 中的文件除外。我不想在folder1folder2 中使用.gitignore,因为其中有很多,它们会被添加到很多,我相信我会忘记向右移动.gitignore文件到位。

另外,JSON文件的嵌套目录可能比较多,这个规则也需要适用于所有子目录。

那么如何忽略一个类型的所有文件,除了某个子目录?

【问题讨论】:

【参考方案1】:

一个可选前缀! 否定 图案;排除的任何匹配文件 以前的模式将成为 再次包括在内。如果一个否定模式 匹配,这将覆盖较低的 优先模式来源。

https://git-scm.com/docs/gitignore

*.json
!spec/*.json

【讨论】:

如果您愿意,也可以将 .gitignore 添加到包含 !/*.json 的规范中。 谢谢!尽管就我而言,我意识到我根本不想忽略我的规范目录中的任何内容。所以我可以使用一个非常简单的!spec。像魅力一样工作。 虽然当 spec 是顶层目录(即 /spec)时 Amber 的答案有效,但当 spec 是子目录时它对我不起作用,例如/a/spec 或 a/b/spec。使用 git 1.7.5.4 @PeterLewis(对于未来的访问者):这种情况可以通过在相关子目录中创建一个 .gitignore 文件来处理。 这个解决方案对我来说只忽略了spec 中的json 文件,而不是问题中somedir 子目录中的文件。我需要使用!spec/**/*.json 以确保more_mocks.json 也被提交。

以上是关于git 忽略特定类型的所有文件,特定子文件夹中的文件除外的主要内容,如果未能解决你的问题,请参考以下文章

10 Git中忽略特定的文件

10 Git中忽略特定的文件

10 Git中忽略特定的文件

如何在 Git diff 和 merge 期间忽略某些特定文件和文件夹

markdown 仅在Git中的当前计算机上忽略特定文件

正确地递归忽略特定文件夹下的所有文件,特定文件类型除外