.gitignore 异常包括额外的文件

.gitignore exception is including extra files

我有 .gitignore 文件:

MyCompany.MyProject.OAuth/bin/
!MyCompany.MyProject.OAuth/bin/Debug/MyCompany.MyProject.OAuth.dll

出于某种原因,源代码树在提交列表中显示 "MyCompany.MyProject.OAuth.dll" 和一些其他文件,例如;

MyCompany.MyProject.OAuth/bin/Debug/AutoMapper.xml
MyCompany.MyProject.OAuth/bin/Debug/Castle.Core.xml
MyCompany.MyProject.OAuth/bin/Debug/Castle.Windsor.xml
MyCompany.MyProject.OAuth/bin/Debug/Newtonsoft.Json.xml
MyCompany.MyProject.OAuth/bin/Debug/MyCompany.MyProject.OAuth.dll
MyCompany.MyProject.OAuth/bin/Debug/MyCompany.MyProject.OAuth.dll.config

如果我删除第二行文件忽略文件,它会在这种情况下删除所有内容(如预期的那样)。我只想包括 "MyCompany.MyProject.OAuth.dll"

这是在进行通配符匹配还是什么?和想法?

哦,我讨厌这样做。 (在 5 分钟内回答自己的问题)但我必须将子文件夹包含在忽略列表中,例如;

MyCompany.MyProject.OAuth/bin/Debug

如果文件的父目录已被排除,则无法重新包含该文件,q.v。 this SO post 来自@VonC。

所以你应该做的是:

MyCompany.MyProject.OAuth/bin/**
!MyCompany.MyProject.OAuth/bin/**/
!MyCompany.MyProject.OAuth/bin/Debug/MyCompany.MyProject.OAuth.dll

第一行递归地忽略 bin 目录中的所有文件。
第二行以递归方式排除 bin 目录中的所有 文件夹
第三行不包括您希望能够提交的文件。