gitignore除了子子文件夹中的文件以外的所有文件

拉斐尔·卡斯纳(Rafael Kassner)

我已经尝试过.gitignore的许多组合,但是都无法满足我的需要。我有这棵树:

jobs/
jobs/projecta/config.xml
jobs/projecta/garbage
jobs/projecta/more/garbage
jobs/projectb/config.xml
jobs/projectb/garbage
jobs/projectb/more/garbage

垃圾是指其他任何文件。我只想提交config.xml文件,而忽略job /内的所有内容,除了它们。所以我尝试了:

/jobs/*
!/jobs/*/config.xml

这样,作业中的所有内容都将被忽略,包括config.xml文件。对于相反的顺序,也会发生同样的情况。因此,我可以强制添加所有配置文件,并且将跟踪对它们的更改,但是如果我在作业中添加新文件夹,则config.xml不会显示为未跟踪文件,因此人们可以忘记添加它们。

我已经尝试过使用**,但是我得到了相同的结果。

有任何想法吗?谢谢!

萨莎·沃尔夫(Sascha Wolf)

我在评论中提到问题实际上回答了这种情况。关键部分如下:

如果目录被排除,Git将永远不会查看该目录的内容。

这只是gitignore文档中该片段的改写,重点是我的。

如果排除了该文件的父目录,则无法重新包含该文件。由于性能原因Git不会列出被排除的目录,因此所包含文件上的任何模式(无论它们在何处定义)都无效。


您的模式/jobs/*将忽略中的每个文件和文件夹jobs这意味着git甚至不会在这个被忽略的文件夹中查找,以查看您的!/jobs/*/config.xml模式是否与其中的文件匹配。

反过来,你必须明确地屏蔽子文件夹,然后reignore内容; 之后,您可以再次忽略您的config.xml文件。这似乎很愚蠢,但这就是git处理忽略的方式。

# Ignore everything in /jobs
/jobs/*
# Reinclude all folders in /jobs
!/jobs/*/
# Ignore everything in the subfolders of /jobs
/jobs/*/*
# Reinclude config.xml files in the first-level subfolders of /jobs
!/jobs/*/config.xml

此模式将忽略config.xml文件的第一级子文件夹中的所有文件,文件除外jobs

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

gitignore:忽略子文件夹中除特定文件类型以外的所有内容

Gitignore用于文件夹和子文件夹中的所有文件

如何删除文件夹中除最新X子文件夹以外的所有子文件夹?

如何使用.gitignore忽略文件夹中的所有子文件夹

.gitignore,排除文件夹中的所有文件...,但保留其中带有.gitkeep的那些子文件夹?

忽略.gitignore中的所有内容并添加子文件夹不起作用

排除所有内容,但gitignore中的某些子文件夹无法正常工作

Gitignore排除子文件夹(带有** /模式),除了特定的一个

列出R中没有子文件夹的文件夹中的所有文件

文件夹中的tar + gz文件,不放入所有子文件夹中

打印包含相同子文件夹的所有文件夹中哪些子文件夹为空?

.gitignore如何排除特定文件夹的所有直接文件,但包括该文件夹的所有子文件夹?

递归清除其中没有文件的文件夹中的所有文件夹和子文件夹

将文件夹中的所有子文件夹压缩为单个zip文件

将文件复制到文件夹和所有子文件夹中

Gulp-定位文件夹及其子文件夹中的所有文件

.docker忽略所有子文件夹,但不忽略文件夹本身中的文件

列出文件夹中的所有文件以及子文件夹

读取文件夹和子文件夹中的所有文件-进度和大小

列出文件夹中的所有文件ID(无子文件夹)

如何在ckfinder中显示所有文件夹,子文件夹和文件

Windows 中文件夹及其子文件夹中的所有文件的列表

将子文件夹中的所有文件移动到父文件夹

遍历文件夹和子文件夹中的所有文件并获取创建日期

如何最好地删除文件夹及其子文件夹中的所有文件

将子文件夹中的所有文件移动到父文件夹

删除文件夹及其子文件夹中的所有文件

批。批量重命名文件夹和所有子文件夹中的文件

InnoSetup:尝试排除一个子文件夹以外的所有子文件夹