忽略`.gitignore`中特定目录之外的文件扩展名

问题描述 投票:0回答:1

在我的存储库中,我有一些脚本可以生成大量

.json
文件,我想忽略这些文件,所以我在
*.json
中有
.gitignore
。但我有一个目录
configs
包含
.json
文件,我希望这些文件处于版本控制中。我知道我可以运行
git add -f config/*.json
,但是有没有任何解决方案仅使用
.gitignore
来覆盖以前的规则,以便 git 自动看到这些文件,而无需我手动运行
git add -f ...

我已经尝试过这些,但没有任何效果:

*.json

!configs
!configs/
!configs/*
!configs/*.json
git wildcard gitignore
1个回答
0
投票

您需要组合模式才能在子目录中获得具体信息。说

git help ignore
对于完整的规范,我认为相关位包括:前导或嵌入的
/
将模式锚定在
.gitignore
文件级别,尾随
/
将模式标记为仅目录排除,以及排除某个目录即会排除其全部内容,查看该目录的唯一方法就是不排除该目录。

我通常建议将

!*/
放在 .gitignore 的末尾,然后是您真正想要的任何整个目录排除,这样效果非常好,直到工作树结构开始变得引人注目。

!*/
!**/configs/*.json

最后一行不必在最后,盯着

git help ignore
(在浏览器版本的命令行上添加
--web
,该选项实际上应该是
--browser
,它使用本地安装的 html )直到你明白为什么。可以这么说,Git 通过向后读取(从多个源组装的)规则并获取它遇到的第一个匹配来获得“后来的规则覆盖”效果。

我希望知道这个临时答案的“规范答案”的人很快就会将其作为重复的内容来结束,这对我来说很好。

© www.soinside.com 2019 - 2024. All rights reserved.