.gitignore如何忽略目录中的一级文件而不忽略子文件?

艾丽西亚

如果您有类似的文件结构?

foo
├── bar
│   ├── file1.coffee
│   ├── file2.coffee
│   └── file3.coffee
├── file1.js
├── file2.js
└── file3.js

如何忽略第一级文件的foo目录(file1.jsfile2.jsfile3.js),但不能忽略的一切bar目录(file1.coffeefile2.coffeefile3.coffee

提供的结构保持相同/相似,但是文件名和扩展名当然会有所不同。

如果每个目录都不具有自己的.gitignore和白名单,是否可以这样做?该文档似乎并未提及如何实现这一目标。

使用*的第一条规则将忽略文件夹,以及,:

如果排除该文件的父目录,则无法重新包含该文件。*
*:除非git 2.中满足某些条件?? +,请参见下文)

因此,您需要在忽略第一级后将文件夹列入白名单。
然后,将这些白名单文件夹下的所有内容都列入白名单:

*
!*/
!*/**

或者,使用Sven Marnach的变体,/*使用第一级的文件和文件夹作为目标:

/*
!*/

请注意,在git 2.9.x / 2.10(2016年中?)下,如果重新包含的路径中没有通配符,则如果排除了该文件的父目录,则可以重新包含该文件

Nguyen Thai Ngoc Duy(pclouds试图添加此功能:

但是,由于重新包含的条件之一是:

重新包含规则中的目录部分必须为原义(即没有通配符)

除非我们只讨论foo和bar文件夹,否则无论如何在这里都行不通:

foo/
!foo/bar

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章