在我的存储库中,我有一些脚本可以生成大量
.json
文件,我想忽略这些文件,所以我在 *.json
中有 .gitignore
。但我有一个目录 configs
包含 .json
文件,我希望这些文件处于版本控制中。我知道我可以运行 git add -f config/*.json
,但是有没有任何解决方案仅使用 .gitignore
来覆盖以前的规则,以便 git 自动看到这些文件,而无需我手动运行 git add -f ...
?
我已经尝试过这些,但没有任何效果:
*.json
!configs
!configs/
!configs/*
!configs/*.json
您需要组合模式才能在子目录中获得具体信息。说
git help ignore
对于完整的规范,我认为相关位包括:前导或嵌入的 /
将模式锚定在 .gitignore
文件级别,尾随 /
将模式标记为仅目录排除,以及排除某个目录即会排除其全部内容,查看该目录的唯一方法就是不排除该目录。
我通常建议将
!*/
放在 .gitignore 的末尾,然后是您真正想要的任何整个目录排除,这样效果非常好,直到工作树结构开始变得引人注目。
!*/
!**/configs/*.json
最后一行不必在最后,盯着
git help ignore
(在浏览器版本的命令行上添加 --web
,该选项实际上应该是 --browser
,它使用本地安装的 html )直到你明白为什么。可以这么说,Git 通过向后读取(从多个源组装的)规则并获取它遇到的第一个匹配来获得“后来的规则覆盖”效果。
我希望知道这个临时答案的“规范答案”的人很快就会将其作为重复的内容来结束,这对我来说很好。