的.gitignore忽略所有文件,然后递归允许一定类型
问题描述:
的文件我有一个文件夹是一个纯粹的T4模板文件夹,但它输出代码生成的文件到其他目录。所以我打算忽略除* .tt文件(即* .cs,* .master,*。resx等)以外的所有内容。有一个问题。我有一个名为static的子文件夹,其中包含永远不应被忽略的文件。的.gitignore忽略所有文件,然后递归允许一定类型
/Test.tt
/Test.cs
/TestHtml.tt
/TestHtml.html
/Static
/Sub/Sub.cs
/Sub/Sub2/Sub2.cs
/Sub3/Sub4/Sub5/Sub5.html
我只想忽略/Test.cs和/Test.html但包括所有其他文件。我已经试过如下:
/.gitignore
# Ignore all
*
# But not these files...
!.gitignore
!*.tt
/Static/.gitignore
!*.*
#also have just tried blank
我不能让git的忽略正确的事情......最主要的问题是'递归排除'我想要静态/ 。。
答
你需要你的锚,否则*
将继续匹配,即使在未忽略目录中的所有文件。
例如
/*
!.gitignore
!*.tt
!/Static/
答
喜欢的东西:
/*
!.gitignore
!*.tt
!/Static/
应该工作。
请看下面使它更加复杂,当你想unignore
其他文件夹中的子目录,当你无视一切我的答案。
我已经把这个,但是,git的状态显示* .TT(好)和静态/。我不知道如果静态/意味着它将加入所有文件,所以我做了git的添加,其次是git的LS-文件,但在静态无添加文件/(注意,没有文件存在于静态/直到至少一个级别 - 即静态/*/*.*首先是“有效”级别,但也有更深层次)。任何其他想法? – Terry 2011-05-04 02:51:54
@Terry:我刚刚用这个'.gitignore'运行了一个测试用例,它适用于我。除了我描述的'.git/info/exclude'或任何其他自定义忽略文件之外,还有其他'.gitignore'文件吗? – 2011-05-04 07:25:35
我没有任何其他'.gitignore'文件。我没有'.git/info/exclude'文件。我确实有一个全局的'.gitignore',但它忽略了标准的'Visual Studio Build Files'...(即不提及* .cs或/ Static)。我是否应该将屏幕截图和ls转储到Dropbox进行检查? – Terry 2011-05-04 07:43:19