如果你有一个类似的文件结构?
foo
??? bar
? ??? file1.coffee
? ??? file2.coffee
? ??? file3.coffee
??? file1.js
??? file2.js
??? file3.js
Run Code Online (Sandbox Code Playgroud)
如何忽略第一级文件的foo目录(file1.js,file2.js,file3.js),但不能忽略的一切bar目录(file1.coffee,file2.coffee,file3.coffee)
提供结构保持相同/相似,但文件名和扩展名当然会有所不同.
是否有可能在没有每个目录拥有自己的.gitignore和白名单的情况下执行此操作?文档似乎没有提到如何实现这一点.
使用*作为第一个规则也会忽略文件夹,并且:
如果排除该文件的父目录,则无法重新包含文件.(
*)
(*:除非在git 2.?+中满足某些条件,见下文)
所以你需要在忽略第一级后列出文件夹.
然后,您将列出白名单文件夹下的所有内容列入白名单:
*
!*/
!*/**
Run Code Online (Sandbox Code Playgroud)
或者,使用Sven Marnach的变体,使用/*哪个目标仅限于第一级的文件和文件夹:
/*
!*/
Run Code Online (Sandbox Code Playgroud)
请注意,使用git 2.9.x/2.10(2016年中期?),如果重新包含的路径中没有通配符,则可以重新包含该文件(如果排除该文件的父目录).
NguyễnTháiNgọcDuy(pclouds)正在尝试添加此功能:
但是,由于重新纳入的条件之一是:
重新包含规则中的目录部分必须是文字(即没有通配符)
除非我们只谈论foo和bar文件夹,否则无论如何都不会在这里工作:
foo/
!foo/bar
Run Code Online (Sandbox Code Playgroud)