多Visual Studio解决方案父目录下.gitignore的适配性问询
关于Visual Studio官方.gitignore规则对嵌套目录有效性的疑问
我找到了官方的Visual Studio .gitignore文件,其中针对构建结果的忽略规则如下:
Build results[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
我知道这些规则是用来排除构建输出文件夹及其内容的,但不确定它们能不能排除仓库根目录以外的对应文件夹。我打算在多个Visual Studio解决方案的父目录创建仓库,这些解决方案有的是单项目(创建时选择解决方案与项目同目录),有的是多项目结构,想确认用这个官方.gitignore能不能忽略所有项目的可忽略文件/文件夹,还是需要修改它。
答案
这些.gitignore规则会匹配仓库中所有层级的对应文件夹,不需要额外修改就能满足你的需求。
原因解释
.gitignore里不带前缀路径的规则(比如[Dd]ebug/)是递归生效的——Git会遍历仓库范围内的所有子目录,只要找到名称匹配的文件夹,就会应用忽略规则。不管你的解决方案是单项目(和项目同目录)还是多项目结构,所有嵌套在子目录里的构建输出文件夹都会被自动匹配排除。
举个实际结构的例子:
仓库根目录/ ├─ 解决方案1/ │ ├─ 项目1/ │ │ ├─ Debug/ │ │ └─ Obj/ │ └─ Debug/ └─ 解决方案2/ └─ Debug/
上面所有的Debug/和Obj/文件夹都会被官方规则自动忽略。
注意事项
- 如果某个构建文件夹已经被Git追踪过(比如之前不小心提交过),.gitignore规则不会自动取消追踪,需要执行命令:
git rm -r --cached <目标文件夹路径>,移除追踪后规则才会生效。 - 只有当你有特殊需求(比如某个特定子目录下的Debug文件夹需要保留)时,才需要修改规则——可以添加
!特定路径/Debug/这类反向规则来取消忽略指定位置的文件夹。
内容的提问来源于stack exchange,提问作者JesusFerVid
相关产品推荐
相关产品推荐

