重新包含“被忽略目录下的多个子目录”的文件(当您尝试时)不起作用,因为“如果排除了该文件的父目录,则无法重新包含该文件”[来源]。
作为一个丑陋但可行的解决方法,在重新包含所需文件之前重新包含路径上的所有父目录,同时通过重新排除这些父目录中的文件来保留它们。
对于您的示例,它如下所示:
web/[Ee]xample.[Ww]eb/[Ss]itecore/*
!web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/
web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/**
!web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/
web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/**
!web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/[Ss]tandard/
web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/[Ss]tandard/**
!web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/[Ss]tandard/[Cc]ustom/
web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/[Ss]tandard/[Cc]ustom/**
!web/[Ee]xample.[Ww]eb/[Ss]itecore/[Ss]hell/[Tt]hemes/[Ss]tandard/[Cc]ustom/32x32*
资料来源:我的相关答案在这里。
或者,您可以改为使用放置在文件目录中的 .gitignore 文件来重新包含 [此处更多]。根据口味,这可能是更漂亮的解决方案。