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
中的文件除外。我不想在folder1
和folder2
中使用.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 忽略特定类型的所有文件,特定子文件夹中的文件除外的主要内容,如果未能解决你的问题,请参考以下文章