我的。net解决方案中有很多项目。我想排除所有“bin/Debug”和“bin/Release”文件夹(及其内容),但仍然包括“bin”文件夹本身和其中包含的任何dll。

.gitignore与"bin/"忽略"调试"和"释放"文件夹,但也任何dll包含在"bin"文件夹。

.gitignore文件中的bin/Debug或bin/Release并不排除目录,除非我完全限定忽略模式为Solution/Project/bin/Debug——我不想这样做,因为我需要为解决方案中的每个项目包括这个完整的模式,以及为添加的任何新项目添加它。

有什么建议吗?


当前回答

您可以在顶层使用.gitignore来忽略项目中同名的所有目录。例如:

Debug/
Release/

这应该立即更新,以便在执行git status时可见。确保这些目录没有添加到git中,因为这会覆盖忽略。

其他回答

你试过通配符吗?

Solution/*/bin/Debug
Solution/*/bin/Release

在git的1.8.2版本中,你也可以使用**通配符来匹配任何级别的子目录:

**/bin/Debug/
**/bin/Release/

似乎这么多年后,这个页面仍然出现在谷歌搜索的顶部…

现代版本的Git支持在单个repo中嵌套.gitignore文件。只需在您想要忽略的子目录中放置一个.gitignore文件。使用一个星号来匹配目录中的所有内容:

echo "*" > /path/to/bin/Debug/.gitignore
echo "*" > /path/to/bin/Release/.gitignore

如果你之前提交过,记得删除之前跟踪的文件:

git rm -rf /path/to/bin/Debug
git rm -rf /path/to/bin/Release

您可以通过执行git status来确认它,以显示从跟踪中删除的所有文件。

要忽略所有子目录,您可以简单地使用:

**/

从git的1.8.2版本开始。

要排除内容和子目录:

**/bin/*

要排除所有子目录,只保留内容,添加"/":

**/bin/*/

您可以在顶层使用.gitignore来忽略项目中同名的所有目录。例如:

Debug/
Release/

这应该立即更新,以便在执行git status时可见。确保这些目录没有添加到git中,因为这会覆盖忽略。